利用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 学生登陆表格的更多相关文章

  1. javafx之登陆界面的跳转

    界面布局用到的是fxml而非纯java代码,工具是javafx sence builder 账号:account 密码:password 登陆成功: 可以点击退出登陆返回到登陆页面 工程目录: pac ...

  2. Java课程设计---浏览学生(表格的使用)

    1.创建显示表格的窗体 package com.student.view; import java.awt.EventQueue; import javax.swing.JFrame; import ...

  3. HttpClient+Jsoup模拟登陆贺州学院教务系统,获取学生个人信息

    前言 注:可能学校的教务系统已经做了升级,当前的程序不知道还能不能成功获取信息,加上已经毕业,我的账户已经被注销,试不了,在这里做下思路跟过程的记录. 在我的毕业设计中”基于SSM框架贺州学院校园二手 ...

  4. Java课程设计--学生成绩管理系统

    一.团队名称: 团队成员 林艺薇 201721123032 网络1712 黄毓颖 201721123033 网络1712 唐川 201721123034 网络1712 梁才玉 201721123038 ...

  5. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  6. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

  7. 初学者:JSP登陆界面

    学生登陆查询系统 1 程序的主要功能及特点 实现一个登录界面的基本功能,具体要求: 登录界面login.jsp含有表单,用户能够输入用户名和密码,并提交表单给verify.jsp. Verify.js ...

  8. Java课设(学生信息管理系统)

    1.团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示.退出等功 ...

  9. ThinkPHP5作业管理系统中处理学生未交作业与已交作业信息

    在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业.那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student).班级(class).作业提 ...

随机推荐

  1. java IO流读取图片供前台显示

    最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是用url路径的方式进行图片展示,一听说要项目要用IO流读取图片感觉好复杂一样,但任务下达下来了,做为程序员只有选择去执行喽,于是找了 ...

  2. mysql 基本操作二

    1.查询数据 MariaDB [jason]> offset ; 默认是从偏移量为0 处开始查村数据,通过指定offset 可以从offset 处开始取数 2.where 语句 MariaDB ...

  3. kali 命令

    1.添加用户 如下命令是用root执行的 adduser dong 会直接在/home 目录创建 dong 目录 2.将用户划分到某个组 gpasswd -a user group 3.ifconfi ...

  4. PHP生成正则表达式的类

    正则表达式,写起来还是比较费劲的,于是封装个类,初稿,抛砖引玉. 关于正则,建议参考 https://github.com/CyC2018/CS-Notes/blob/master/notes/%E6 ...

  5. python 将列表里的字典元素合并为一个字典

    python 将列表里的字典元素合并为一个字典 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  6. git clean解决 GIT error: The following untracked working tree files would be overwritten

    git clean用法:https://www.cnblogs.com/lsgxeva/p/8540476.html :

  7. json字符串手动拼接

    return "xxx{" + "xxx='" + xxx+ '\'' + ", ggg='" + ggg+ '\'' + ", ...

  8. 创建新react项目 运行npm start 报错踩过的坑

    1.看react官网创建新的react项目 :npx create-react-app my-app    cd到my-app  npm start 遇见如下报错 这是因为电脑本地git的原因 ,不是 ...

  9. TP5多字段排序

    有业务需求如下: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7); 这里直入主 ...

  10. css伪类:before及:after除了插入文字内容还能做点儿啥?画图

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11181416.html 1.什么时候用伪类:before和:after? 结合实际开发情况,说一 ...