利用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. sublime插件开发: 文件说明

    sublime插件开发 文件 .sublime-settings 设置文件 Main.sublime-menu 主菜单按钮配置文件 Side Bar.sublime-menu 侧边栏菜单文件列表,选中 ...

  2. 安装-apache skywalking (java 应用性能监控)

    官网:http://skywalking.apache.org/ 服务器:10.30.31.28 centos 7 jdk 1.8.x ES 5.x 5.0.0-bet a2版本 . http://s ...

  3. spring boot2X整合nacos一使用Feign实现服务调用

    服务调用有两种方式: A.使用RestTemplate 进行服务调用 查看 B.使用Feign 进行声明式服务调用 上一次写了使用RestTemplate的方式,这次使用Feign的方式实现 服务注册 ...

  4. ORM之Dapper

    ORM之Dapper 一.下载安装: nuget 搜索dapper安装 二.使用: 三.优缺点: 优点: 1.开源.轻量.单文件(代码就一个SqlMapper.cs文件,编译后就40K的一个很小的Dl ...

  5. maven中pom的继承以及dependencies与dependencyManagement的区别

    https://blog.csdn.net/zzm3280/article/details/84952623 分类专栏: maven   本文转自:https://blog.csdn.net/liut ...

  6. c# 基本类型存储方式的研究

    基本单位 二进制,当前的计算机系统使用的基本上是二进制系统.二进制的单位是位,每一位可以表示2个数: 0或1.byte(字节) 有8位,可以表示的数为2的8次方,即256个数,范围为[0-255]. ...

  7. java基础 抽象

    /** * 抽象方法:就是加上abstract关键字,并去掉大括号,分号结束 * 抽象类:抽象方法坐在的类,必须是抽象类.在class前家abstract即可 * * 如何使用抽象类和抽象方法: * ...

  8. Google Chrome 浏览器JS无法更新解决办法

    JS无法更新原因: 浏览器为了加载快,默认是按照自定规则更新缓存,非实时更新. 我们在开发的时候,JS变动很快,需要即时让浏览器加载最新文件,也就是禁用浏览器缓存 (1)使用F12进入开发者模式,找到 ...

  9. mybatis中用注解如何处理存储过程返回的多个结果集?

    sql代码: create procedure sptest.getnamesanditems() reads sql data dynamic result sets 2 BEGIN ATOMIC ...

  10. Java之路---Day19(set接口)

    set接口 java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方 法基本一致,但是set接口中元素 ...