JavaFX 学生登陆表格
利用JavaFX实现一个学生登陆的界面,其中包括各种JavaFX组件的使用,利用焦点变动自动检测内容的合法性和监控文本输入以及页面的跳转,具体代码如下:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package 期末作业;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextArea;
import javafx.scene.control.PasswordField;
import javafx.scene.control.Button;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.ComboBox;
import javafx.scene.control.CheckBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.scene.layout.Pane;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import java.awt.event.FocusListener;
import java.awt.event.FocusEvent;
import java.util.regex.Pattern;
import javafx.scene.input.KeyCode;
/**
*
* @author Midori
*/
public class 登録 extends Application{
String s1,s2,s3,s4,s5;
@Override
public void start(Stage primaryStage){
primaryStage.setResizable(false);
Pane pane=new Pane();
GridPane grid=new GridPane();
grid.setHgap(25);
grid.setVgap(25);
pane.setMinSize(600, 250);
Text t1=new Text("用户登陆");
t1.setFont(Font.font("Tahoma", 40));
grid.add(t1,1,0);
Text t2=new Text("姓名:");
t2.setFont(Font.font("Tahoma", 30));
grid.add(t2, 0, 1);
Text t3=new Text("密码:");
t3.setFont(Font.font("Tahoma", 30));
grid.add(t3, 0, 2);
TextField t4=new TextField();
PasswordField t5=new PasswordField();
grid.add(t4, 1, 1);
grid.add(t5, 1, 2);
grid.setAlignment(Pos.CENTER);
grid.setLayoutX(100);
pane.getChildren().add(grid);
Button bt=new Button("确定");
bt.setLayoutX(350);
bt.setLayoutY(200);
pane.getChildren().add(bt);
bt.setOnKeyPressed(e->{
if(e.getCode()==KeyCode.ENTER){
s1="姓名: gdufs";
s2="学号:";
s3="学院:";
s4="性别:";
s5="爱好:";
TextArea T=new TextArea();
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
T.setLayoutX(100);
T.setLayoutY(600);
T.setMaxSize(500, 300);
T.setEditable(false);
if(t4.getText().equals("gdufs")&&t5.getText().equals("welcome")){
primaryStage.close();
Stage stage=new Stage();
Pane p1=new Pane();
GridPane p2=new GridPane();
p2.setHgap(25);
p2.setVgap(25);
Text T1=new Text("用户信息主界面");
T1.setFont(Font.font("Tahoma", 40));
p2.add(T1, 1, 0);
Text T2=new Text("用户名");
T2.setFont(Font.font("Tahoma", 30));
p2.add(T2, 0, 1);
Text T3=new Text("学号");
T3.setFont(Font.font("Tahoma", 30));
p2.add(T3, 0, 2);
Text T4=new Text("学院");
T4.setFont(Font.font("Tahoma", 30));
p2.add(T4, 0, 3);
p2.setLayoutX(100);
p2.setLayoutY(100);
p1.getChildren().addAll(p2);
Text T5=new Text("性别");
T5.setFont(Font.font("Tahoma", 30));
p2.add(T5, 0, 4);
Text T8=new Text("爱好");
T8.setFont(Font.font("Tahoma", 30));
p2.add(T8, 0, 5);
TextField T6=new TextField("gdufs");
T6.setEditable(false);
T6.setMaxSize(300, 1);
p2.add(T6, 1, 1);
TextField T7=new TextField();
Text text=new Text();
text.setFont(Font.font("Tahoma", 15));
text.setFill(Color.WHITE);
text.setText("非法输入!");
p2.add(text, 2, 2);
T7.focusedProperty().addListener((s,ov,nv)->{
if(!nv){
String S=T7.getText();
if(!isNum(S)){
text.setFill(Color.RED);
}else{
text.setFill(Color.WHITE);
s2="学号: "+S;
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
}
}
});
p2.add(T7, 1, 2);
ComboBox cb=new ComboBox();
cb.getItems().addAll("信息学院","英教学院","东语学院");
cb.setOnAction(e1->{
if(!cb.getSelectionModel().isEmpty()){
s3="学院: "+cb.getValue();
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
}
});
p2.add(cb, 1, 3);
final ToggleGroup group=new ToggleGroup();
RadioButton rb1=new RadioButton("男");
rb1.setToggleGroup(group);
RadioButton rb2=new RadioButton("女");
rb2.setToggleGroup(group);
rb1.setOnAction(e1->{
s4="性别: 男";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
rb2.setOnAction(e1->{
s4="性别: 女";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
GridPane P=new GridPane();
P.setVgap(20);
P.setHgap(75);
P.add(rb1, 0, 0);
P.add(rb2, 1, 0);
p2.add(P, 1, 4);
GridPane P1=new GridPane();
GridPane P2=new GridPane();
P1.setHgap(75);
P2.setHgap(75);
CheckBox cb1=new CheckBox("唱歌");
CheckBox cb2=new CheckBox("RAP");
CheckBox cb3=new CheckBox("篮球");
CheckBox cb4=new CheckBox("唱跳RAP篮球");
cb1.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb2.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb3.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb4.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
P1.add(cb1, 0, 0);
P1.add(cb2, 1, 0);
P2.add(cb3, 0, 0);
P2.add(cb4, 1, 0);
p2.add(P1, 1, 5);
p2.add(P2, 1, 6);
p1.getChildren().add(T);
Scene sc=new Scene(p1);
stage.setMinWidth(700);
stage.setMinHeight(1000);
stage.setResizable(false);
stage.setScene(sc);
stage.setTitle("個人情報");
stage.show();
}else{
Text t=new Text("用户名或密码错误!");
t.setFill(Color.RED);
t.setLayoutX(400);
t.setLayoutY(200);
pane.getChildren().add(t);
}
}
});
bt.setOnAction(e->{
s1="姓名: gdufs";
s2="学号:";
s3="学院:";
s4="性别:";
s5="爱好:";
TextArea T=new TextArea();
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
T.setLayoutX(100);
T.setLayoutY(600);
T.setMaxSize(500, 300);
T.setEditable(false);
if(t4.getText().equals("gdufs")&&t5.getText().equals("welcome")){
primaryStage.close();
Stage stage=new Stage();
Pane p1=new Pane();
GridPane p2=new GridPane();
p2.setHgap(25);
p2.setVgap(25);
Text T1=new Text("用户信息主界面");
T1.setFont(Font.font("Tahoma", 40));
p2.add(T1, 1, 0);
Text T2=new Text("用户名");
T2.setFont(Font.font("Tahoma", 30));
p2.add(T2, 0, 1);
Text T3=new Text("学号");
T3.setFont(Font.font("Tahoma", 30));
p2.add(T3, 0, 2);
Text T4=new Text("学院");
T4.setFont(Font.font("Tahoma", 30));
p2.add(T4, 0, 3);
p2.setLayoutX(100);
p2.setLayoutY(100);
p1.getChildren().addAll(p2);
Text T5=new Text("性别");
T5.setFont(Font.font("Tahoma", 30));
p2.add(T5, 0, 4);
Text T8=new Text("爱好");
T8.setFont(Font.font("Tahoma", 30));
p2.add(T8, 0, 5);
TextField T6=new TextField("gdufs");
T6.setEditable(false);
T6.setMaxSize(300, 1);
p2.add(T6, 1, 1);
TextField T7=new TextField();
Text text=new Text();
text.setFont(Font.font("Tahoma", 15));
text.setFill(Color.WHITE);
text.setText("非法输入!");
p2.add(text, 2, 2);
T7.focusedProperty().addListener((s,ov,nv)->{
if(!nv){
String S=T7.getText();
if(!isNum(S)){
text.setFill(Color.RED);
}else{
text.setFill(Color.WHITE);
s2="学号: "+S;
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
}
}
});
p2.add(T7, 1, 2);
ComboBox cb=new ComboBox();
cb.getItems().addAll("信息学院","英教学院","东语学院");
cb.setOnAction(e1->{
if(!cb.getSelectionModel().isEmpty()){
s3="学院: "+cb.getValue();
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
}
});
p2.add(cb, 1, 3);
final ToggleGroup group=new ToggleGroup();
RadioButton rb1=new RadioButton("男");
rb1.setToggleGroup(group);
RadioButton rb2=new RadioButton("女");
rb2.setToggleGroup(group);
rb1.setOnAction(e1->{
s4="性别: 男";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
rb2.setOnAction(e1->{
s4="性别: 女";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
GridPane P=new GridPane();
P.setVgap(20);
P.setHgap(75);
P.add(rb1, 0, 0);
P.add(rb2, 1, 0);
p2.add(P, 1, 4);
GridPane P1=new GridPane();
GridPane P2=new GridPane();
P1.setHgap(75);
P2.setHgap(75);
CheckBox cb1=new CheckBox("唱歌");
CheckBox cb2=new CheckBox("RAP");
CheckBox cb3=new CheckBox("篮球");
CheckBox cb4=new CheckBox("唱跳RAP篮球");
cb1.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb2.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb3.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
cb4.setOnAction(e1->{
s5="爱好: ";
if(cb1.isSelected())
s5+=cb1.getText()+";";
if(cb2.isSelected())
s5+=cb2.getText()+";";
if(cb3.isSelected())
s5+=cb3.getText()+";";
if(cb4.isSelected())
s5+=cb4.getText()+";";
T.setText(s1+"\n"+s2+"\n"+s3+"\n"+s4+"\n"+s5);
});
P1.add(cb1, 0, 0);
P1.add(cb2, 1, 0);
P2.add(cb3, 0, 0);
P2.add(cb4, 1, 0);
p2.add(P1, 1, 5);
p2.add(P2, 1, 6);
p1.getChildren().add(T);
Scene sc=new Scene(p1);
stage.setMinWidth(700);
stage.setMinHeight(1000);
stage.setResizable(false);
stage.setScene(sc);
stage.setTitle("個人情報");
stage.show();
}else{
Text t=new Text("用户名或密码错误!");
t.setFill(Color.RED);
t.setLayoutX(400);
t.setLayoutY(200);
pane.getChildren().add(t);
}
});
Scene scene=new Scene(pane);
primaryStage.setScene(scene);
primaryStage.setTitle("登録");
primaryStage.show();
}
public static boolean isNum(String str){
if(str.length()!=11)
return false;
else{
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
}
public static void main(String[] args){
Application.launch(args);
}
}
下面是图形界面:
JavaFX 学生登陆表格的更多相关文章
- javafx之登陆界面的跳转
界面布局用到的是fxml而非纯java代码,工具是javafx sence builder 账号:account 密码:password 登陆成功: 可以点击退出登陆返回到登陆页面 工程目录: pac ...
- Java课程设计---浏览学生(表格的使用)
1.创建显示表格的窗体 package com.student.view; import java.awt.EventQueue; import javax.swing.JFrame; import ...
- HttpClient+Jsoup模拟登陆贺州学院教务系统,获取学生个人信息
前言 注:可能学校的教务系统已经做了升级,当前的程序不知道还能不能成功获取信息,加上已经毕业,我的账户已经被注销,试不了,在这里做下思路跟过程的记录. 在我的毕业设计中”基于SSM框架贺州学院校园二手 ...
- Java课程设计--学生成绩管理系统
一.团队名称: 团队成员 林艺薇 201721123032 网络1712 黄毓颖 201721123033 网络1712 唐川 201721123034 网络1712 梁才玉 201721123038 ...
- 基于数据库MySQL的简易学生信息管理系统
通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- 初学者:JSP登陆界面
学生登陆查询系统 1 程序的主要功能及特点 实现一个登录界面的基本功能,具体要求: 登录界面login.jsp含有表单,用户能够输入用户名和密码,并提交表单给verify.jsp. Verify.js ...
- Java课设(学生信息管理系统)
1.团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示.退出等功 ...
- ThinkPHP5作业管理系统中处理学生未交作业与已交作业信息
在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业.那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student).班级(class).作业提 ...
随机推荐
- vue自学小demo----前端
vue学习的小demo,实现简单的页面项目的增删 代码如下 <!DOCTYPE html> <html> <head> <meta charset=" ...
- es6引用模块import后面加上花括号{}和不加花括号的区别
在使用import语法引用模块时,如何正确使用{} 例如:有两个文件,home.js.user.js 当需要在home.js中引入user.js的时候 //home.js import user fr ...
- Spring AOP 代理类,BeanNameAutoProxyCreator cglib
BeanNameAutoProxyCreator支持拦截接口和类,但不支持已经被jdk代理过的类$Proxy8.使用cglib才能代理,如下 <!-- 通过bean的名字来匹配选择要代理的bea ...
- Windows彻底卸载VMWare虚拟机详细步骤
不能卸载vmware ,原因是VMware的服务在运行中,停止服务就可以卸载了. 点击开始输入[services.msc],然后点击搜索到服务. 找到这个软件的图一的所有项,然后右键它属性. 全部设置 ...
- C#】通过遍历IFrame访问页面元素
最近在做一个小项目,期间需要用到C#去操作IE页面中的元素,实现自动填写表单并且提交的功能,想这网上关于这方面的东西肯定很多,于是开始在网上找资料. 在逆心的博客上找到些东西对自己帮助很大,原文链接: ...
- Linux 下杀毒软件 clamav 的安装和使用
安装依赖: 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum install -y openssl yum inst ...
- failed to open stream: operation failed
# composer require oygza/aliyun-php-sdk-afs You are running composer with xdebug enabled. This has a ...
- Linux下查看.so和可执行文件是否debug编译
如何判断一个.so是否是debug编译的? 如果用此方法:用file来查看一个.so, 根据是否包含”not stripped”来判断该.so是否是debug编译的.然而stripped/not st ...
- Rsync学习之旅上
rsync 简介 什么是rsync rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具. 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 实现增量 ...
- LOJ2336 JOI2017 绳 贪心、构造
传送门 首先显然的是可以一开始先染好再做.每个点只会被染一次.最后只剩下两种颜色. 接下来是结论时间:序列可以反转的充要条件是除了首尾的极大颜色连通块以外其他极大颜色连通块长度为偶数. 证明充分性:考 ...