利用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. MySQL错误ERROR 1786 (HY000)解决

    务上需要支持create table XXX as select * from XXX; 这种创建表的语法,但是MySQL5.7.x版本里面gtid是开启的,会报错 ERROR 1786 (HY000 ...

  2. 安装OpenIMSCore的SIP测试客户端 utcimsclient

    环境 Ubuntu16.04,Vmvare12(win10). 下载 & 解压 //utcimsclient 下载地址 : https://liquidtelecom.dl.sourcefor ...

  3. Java一个对象占用多少字节

    虚拟机:Java HotSpot(TM) 64-Bit Server VM (25.221-b11, mixed mode) 对象的内存以字节为单位,且必须是8的倍数,它的构成由3部分组成:对象头+实 ...

  4. angular get 数据请求

    数据请求 get 新建一个服务 1. ng g service services /+服务名  eg:ng g service services/player 在此服务中进行设置 引入自带组件以及注册 ...

  5. 概率dp - Uva 10900 So you want to be a 2n-aire?

    So you want to be a 2n-aire? Problem's Link Mean: 玩一个答题赢奖金的游戏,一开始有1块钱,玩n次,每次赢的概率为t~1之间的某个实数. 给定n和t,求 ...

  6. 贪心 --- Y2K Accounting Bug

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9691   Accepted: 483 ...

  7. GoF的23种设计模式之创建型模式的特点和分类

    创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”.这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成.就像我们去商场购买商品时, ...

  8. python 搭建 websocket server 发送 sensor 数据

    搞了几天,顺便把代码贴这里,需要的 python 包: gevent,gevent-websocket,bottle,wiringpi-python 简单说明: - gevent 提供了支持 conc ...

  9. 50道Java线程面试题分析及答案

    下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程 ...

  10. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...