Javafx图形界面开发

Java实验合集 专栏收录该内容
8 篇文章 2 订阅

 

目录

一、实验目的

二、实验代码

1. 编写一个应用程序,有一个标题为“登录”的窗口,能实现用户名和密码的输入。

2. 编写一个应用程序,有一个标题为“注册学生信息”的窗口,窗口的布局和组件请自行设计,能实现学生信息的注册功能。

3.设计如图5-4所示的聊天窗口

4. (选做)编写一个简易计算器程序,界面如图5-5,实现简单的加、减、乘、除等功能。最多显示12个数字。

每文一语


 

一、实验目的

1. 掌握JavaFX的基本概念舞台、场景、节点、面板、控件等。

2. 掌握JavaFX的窗体结构;

3. 掌握JavaFX常用的布局面板类,如栈面板StackPane类、流式面板FlowPane类、边界面板BorderPane类、GridPane网格面板类、Hbox单行面板类、Vbox单列面板类等的使用;

4. 掌握常用的控件,如ButtonTextFieldLabelPasswordField等的使用;

5. 掌握JavaFx事件处理机制;

二、实验代码

1. 编写一个应用程序,有一个标题为“登录”的窗口,能实现用户名和密码的输入。

1)如果用户名和密码输入正确,则单击“登录”按钮弹出“用户登录成功”的消息框;

2)如果用户名和密码输入错误,则单击“登录”按钮弹出“用户登录失败”的消息框。

import java.util.ArrayList;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
import javafx.scene.control.ScrollPane;
public class App15_7 extends Application
{
  private TextField tf=new TextField();
  private PasswordField pf=new PasswordField();
  private TextArea ta=new TextArea("未登录");
  @Override
  public void start(Stage Stage)
  {
    GridPane rootGP=new GridPane();
    final Label lab1=new Label("用户名:");
    final Label lab2=new Label("密  码:");
    tf.setPromptText("输入用户名");
    pf.setPromptText("输入密码");
    rootGP.add(lab1,0,0);
    rootGP.add(tf,1,0);
    rootGP.add(lab2,0,1);
    rootGP.add(pf,1,1);
    final ScrollPane scro=new ScrollPane(ta);
    ta.setPrefColumnCount(15);
    ta.setEditable(false);
    pf.setOnAction(e->
      {
    	ArrayList databases = new ArrayList();
    	user user1 = new user("tim","123");
    	databases.add(user1);
    	user user2 = new user("mary","121");
    	databases.add(user2);
    	user user3 = new user("bill","321");
    	databases.add(user3);
    	user user4 = new user("carl","110");
    	databases.add(user4);
    	for(int i=0;i<=databases.size()-1;i++) {
    		if(tf.getText().equals(((user) databases.get(i)).getname()) && pf.getText().equals(((user) databases.get(i)).getpsw()))
            {
              ta.setEditable(true);
              ta.setWrapText(true);
              ta.setStyle("-fx-text-fill:red");
              ta.setText("恭喜你!!\n登录成功");
            }
          }
    	}
        
    );
    rootGP.add(scro,0,3,4,3);
    Scene scene=new Scene(rootGP,190,120);
    Stage.setTitle("登录");
    Stage.setScene(scene);
    Stage.show();
  }
  
  public static void main(String[] args) {
	  launch(args);
  }
}

2. 编写一个应用程序,有一个标题为“注册学生信息”的窗口,窗口的布局和组件请自行设计,能实现学生信息的注册功能。

1)其中学生信息包括:学号、姓名、出生日期等;

2)单击注册按钮,如果未注册过则弹出“学生信息注册成功”的对话框,并把学生添加到List集合中;

3)单击注册按钮,如果学生已经注册过,则弹出“学生信息已存在,注册失败”的对话框;

4)单击取消按钮,结束本次注册并关闭窗口。

5)采用面向对象程序设计思想

package Javatest;

import java.util.ArrayList;
import java.util.Iterator;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
@SuppressWarnings("unused")
public class Lab5 extends Application{
	final Label lab1=new Label("姓名:");
	final Label lab2=new Label("学号:");
	final Label lab3=new Label("出生日期:");
	final TextField tf1=new TextField();
	final TextField tf2=new TextField();
	final TextField tf3=new TextField();
	public Button bt1;
	public Button bt2;
	@Override
	public void start(Stage primaryStage ) throws Exception {
		GridPane rootGP=new GridPane();
		rootGP.setPadding(new Insets(15,15,15,15));
		rootGP.setHgap(5);
		rootGP.setVgap(5);
		tf1.setPromptText("请输入学生姓名");
		rootGP.add(lab1, 0, 0);
		rootGP.add(tf1, 1, 0);
		
		tf2.setPromptText("请输入学生号");
		rootGP.add(lab2, 0, 1);
		rootGP.add(tf2, 1, 1);
		tf3.setPromptText("请输入出生日期");
		rootGP.add(lab3, 0, 2);
		rootGP.add(tf3, 1, 2);
		
		Button bt1=new Button("注册");
		rootGP.add(bt1, 0, 3);
		Button bt2=new Button("取消");
		rootGP.add(bt2, 1, 3);
		
		Scene scene=new Scene(rootGP,400,120);
		primaryStage.setScene(scene);
		primaryStage.setTitle("登录");
		primaryStage.show();
		
		bt1.setOnAction(e->{
			Stage stage=new Stage();
			stage.setTitle("消息框");
			final TextArea ta=new TextArea("请输入内容....");
			ta.setText("成功界面");
			stage.setScene(new Scene (ta,180,180));
			stage.show();
			
			if ((tf1.getText().equals("周彦志")) && (tf2.getText().equals("2019443709"))
					&& tf3.getText().equals("2001-07-06"))
			{
			ta.setWrapText(true);
			ta.setStyle("-fx-text-fill:blue");
			ta.setText("注册成功!");
			ArrayList<String> list1=new ArrayList<String>();
			list1.add("杨洪    2019443747    2000年12月11日");
			/*遍历
			 
			      数组*/
			@SuppressWarnings("rawtypes")
			Iterator i =list1.iterator();
			while (i.hasNext()) {
				String str=(String)i.next();
				System.out.println(str);
			}
			}else {
				ta.setWrapText(true);//文本区可换行
				ta.setStyle("-fx-text-fill:red");//将文本区中的文字设置为红色
				ta.setText("该学生信息已存在,注册失败!");
			}});
		
		
		
		
}
	
}

3.设计如图5-4所示的聊天窗口

5-4 聊天窗口界面

单击“发送”按钮,文本区域中的信息发送到聊天区,并清空其中的内容;

窗口启动时,加载历史聊天记录;

单击关闭按钮,保存聊天记录到文件,并关闭窗口。

package homework5;
import java.awt.Button;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Q4 extends Frame {
	TextArea ta;
	TextField tf;
	public Q4() {//用构造函数初始化
	ta = new TextArea("");
	ta.setBounds(50, 50, 350, 200);
	tf = new TextField("");
	tf.setBounds(50, 300, 350, 50);
	Button b1 = new Button("发送");
	b1.setBounds(400, 300, 50, 50);
	Button b2 = new Button("关闭");
	b2.setBounds(460, 300, 50, 50);
	add(ta);
	add(tf);
	add(b1);
	add(b2);
	
	b1.addActionListener(new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent e) {
	// TODO Auto-generated method stub
	ta.append(tf.getText()+"\n");
	tf.setText("");
	}
	});
	jie er = new jie();
	b2.addActionListener(er);
	addWindowListener(new WindowAdapter() {
	public void windowClosing(WindowEvent ee) {
	System.exit(0);
	}
	});
	}
	public static void main(String[] args) {
	
	Q4 f = new Q4();
	f.setLayout(null);
	f.setTitle("消息窗口");
	f.setSize(600, 600);
	f.setVisible(true);
	}
	class jie implements ActionListener {
	public void actionPerformed(ActionEvent e) {
	System.exit(0);//不是1
	}
	}
}
}

4. (选做)编写一个简易计算器程序,界面如图5-5,实现简单的加、减、乘、除等功能。最多显示12个数字。

5-5 简易计算器

package demo05;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Calculator implements ActionListener{
	GridLayout layout;
	JButton button1,button2,button3,button4,button5,button6,button7,button8,button9,button10,button11,button12,button13,button14,button15,button16;
	JSplitPane jsp;
	JFrame frame;
//	JTextArea area;
	JPanel pane1,pane2;
	JTextField jtf;
	public Calculator(){
		frame=new JFrame("计算器");
		frame.setSize(new Dimension(400,600));
		layout=new GridLayout(4,4);
		pane1=new JPanel(layout);
		jtf=new JTextField();
		jtf.setBounds(0, 0, 400, 200);
		button1=new JButton("7");
		button2=new JButton("8");
		button3=new JButton("9");
		button4=new JButton("/");
		button5=new JButton("4");
		button6=new JButton("5");
		button7=new JButton("6");
		button8=new JButton("*");
		button9=new JButton("1");
		button10=new JButton("2");
		button11=new JButton("3");
		button12=new JButton("+");
		button13=new JButton(".");
		button14=new JButton("0");
		button15=new JButton("=");
		button16=new JButton("-");
		pane1.add(button1);
		pane1.add(button2);
		pane1.add(button3);
		pane1.add(button4);
		pane1.add(button5);
		pane1.add(button6);
		pane1.add(button7);
		pane1.add(button8);
		pane1.add(button9);
		pane1.add(button10);
		pane1.add(button11);
		pane1.add(button12);
		pane1.add(button13);
		pane1.add(button14);
		pane1.add(button15);
		pane1.add(button16);
		jsp=new JSplitPane(JSplitPane.VERTICAL_SPLIT,jtf,pane1);
		frame.add(jsp);
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		button4.addActionListener(this);
		button5.addActionListener(this);
		button6.addActionListener(this);
		button7.addActionListener(this);
		button8.addActionListener(this);
		button9.addActionListener(this);
		button10.addActionListener(this);
		button11.addActionListener(this);
		button12.addActionListener(this);
		button13.addActionListener(this);
		button14.addActionListener(this);
		button15.addActionListener(this);
		button16.addActionListener(this);
		jtf.addActionListener(this);
		frame.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent event) {
		Object obj=event.getSource();
		if(obj instanceof JButton){
			JButton button=(JButton)obj;
			if(button14==button){
			if(jtf.getText().equals("0")){
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"0");
			}
			}
			if(button9==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("1");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"1");
			}
			}
			if(button10==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("2");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"2");
			}
			}
			if(button11==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("3");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"3");
			}
			}
			if(button5==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("4");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"4");
			}
			}
			if(button6==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("5");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"5");
			}
			}
			if(button7==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("6");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"6");
			}
			}
			if(button1==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("7");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"7");
			}
			}
			if(button2==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("8");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"8");
			}
			}
			if(button3==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("9");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"9");
			}
			}
			if(button13==button){
				if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"");
			}
			}
			if(button12==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("+");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"+");
			}
			}
			if(button16==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("-");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"-");
			}
			}
			if(button8==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("*");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"*");
			}
			}
			if(button4==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText("/");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+"/");
			}
			}
			if(button13==button){
			if(jtf.getText().equals("0")){
				jtf.setText("");
				jtf.setText(".");
				jtf.requestFocus();
			}
			else{
				String str=jtf.getText();
				jtf.setText(str+".");
			}
			}
			//等号实现加减乘除功能
			if(button15==button){
				if(jtf.getText().indexOf("+")!=-1){
					String str=jtf.getText();
					int i=str.indexOf("+");
					String s=str.substring(0, i);
					String s1=str.substring(i+1,str.length());
					Double d1=Double.parseDouble(s);
					Double d2=Double.parseDouble(s1);
					double result=d1+d2;
					String str1=String.valueOf(result);
					jtf.setText(str1);
}

			
			//减法运算
				else
					if(jtf.getText().indexOf("-")!=-1){
				
				String str=jtf.getText();
				int i=str.indexOf("-");
				String s=str.substring(0, i);
				String s1=str.substring(i+1,str.length());
				Double d1=Double.parseDouble(s.trim());
				Double d2=Double.parseDouble(s1);
				double result=d1-d2;
				String str1=String.valueOf(result);
				jtf.setText(str1);
			}
			//乘法运算
					else if(jtf.getText().indexOf("*")!=-1){
				String str=jtf.getText();
				int i=str.indexOf("*");
				String s=str.substring(0, i);
				String s1=str.substring(i+1,str.length());
				Double d1=Double.parseDouble(s.trim());
				Double d2=Double.parseDouble(s1);
				double result=d1*d2;
				String str1=String.valueOf(result);
				jtf.setText(str1);
			}
					else if(jtf.getText().indexOf("/")!=-1){
						String str=jtf.getText();
						int i=str.indexOf("/");
						String s=str.substring(0, i);
						String s1=str.substring(i+1,str.length());
						Double d1=Double.parseDouble(s.trim());
						Double d2=Double.parseDouble(s1);
						double result=d1/d2;
						String str1=String.valueOf(result);
						jtf.setText(str1);
			}
			else{
				jtf.setText("请选择要输入的运算符");
			}
			}
			}
		
		}
		
	public static void main(String[] args){
		new Calculator();
	}
}

每文一语

快乐永远是自己给自己的,那么所谓的安全感又何尝不是了

本文的幸运色是橙黄色哟!希望你的每一天都是快乐的!

  • 4
    点赞
  • 0
    评论
  • 17
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值