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).作业提 ...
随机推荐
- code 1716
# import_company def test_import_company(self): headers=self.headers headers["Content-Type" ...
- 【Shiro学习之一】Shiro入门
一.Shiro Apache Shiro是一个Java安全框架. 1.官网:http://shiro.apache.org/ 2.三个核心组件 Subject:即“当前操作用户”,可以指人.第三方进程 ...
- Swagger2.9.2进入API界面报NumberFormatException异常
[转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11778377.html 作者:jstarseven 码字挺辛苦的..... ...
- Linux 就该这么学 CH07 使用RAID和LVM磁盘阵列技术
1 RAID (独立冗余磁盘阵列) RAID 技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据切割成多个区段之后分别存在各个不同的物理硬盘设备上,然后利用分散读写计数来提升磁盘 ...
- python面试导航
python面试题库 python基础 等待更新中 函数 等待更新中 面向对象 等待更新中 高级编程 等待更新中 数据库 等待更新中 前端&django 等待更新中 crm 等待更新中 drf ...
- C++删除排序数组中的重复项
class Solution { public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) { ; } ...
- k8s Helm安装Prometheus Operator
Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装完成了k8s的集群和helm的安装,今天我们来看看Prometheus的监控怎么搞.Prometheus Operator ...
- 离线方式快速安装python模块以及相关依赖模块
一般公司的服务器都是和外网隔离的,这个如果没有内部pip源的话,想要安装python的模块就需要去python官网一个一个下载依赖模块的包,然后逐个安装,这样做非常耗时间. 我们今天用的办法就是现在我 ...
- Java学习:递归
递归的思想 以此类推是递归的基本思想. 具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决.在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情 ...
- mybatis插入数据后返回自增主键ID详解
1.场景介绍: 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...