《Java程序设计》实验指导——项目7 图形用户界面的设计与实现

实验目的

掌握Java图形组件和布局管理器的使用;掌握使用Java事件处理机制的使用;掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等;掌握菜单、弹出式菜单设计。

实验性质

验证性实验+设计性实验

实验内容

(1)分析调试教材第8章中的实例

略。

(2)设计一个简单计算器

设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。
第(2)题图

import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;



public class example {
    
    
	public static void main(String[] args) {
    
    
		new LoginFrame();
	}
}

class LoginFrame extends JFrame {
    
    
	JTextField num1;
	JTextField num2;
	JTextField num3;

	JPanel p;
	public LoginFrame(){
    
    		

		this.setBounds(300, 300, 280, 200);
		this.setTitle("轩哥牌计算器");
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Font ft=new Font("宋体",Font.PLAIN,24) ;		

		JLabel A=new JLabel("操作数:");
		A.setFont(ft);
		JLabel B=new JLabel("操作数:");
		B.setFont(ft);
		JLabel consequent=new JLabel("结果:");
		consequent.setFont(ft);
		num1=new JTextField(10);
		num1.setFont(ft);
		num2=new JTextField(10);
		num2.setFont(ft);
		num3=new JTextField(10);
		num3.setFont(ft);
		JButton ok=new JButton();

		ok.setText("+");
		ok.setActionCommand("+");
		ok.setFont(ft);	
		ok.addActionListener(new OKAction());
		ActionListener al=new OKAction();
		ok.addActionListener(al);
		//事件,事件源,对事件源添加相应的事件监听器,编写事件处理类(实现事件监听器接口,重写其抽象方法):内部类)

		JButton ok2=new JButton("-");
		ok2.setActionCommand("-");
		ok2.setFont(ft);
		ok2.addActionListener(new OKAction());

		JButton ok3=new JButton("*");
		ok3.setActionCommand("*");
		ok3.setFont(ft);
		ok3.addActionListener(new OKAction());

		JButton ok4=new JButton("/");
		ok4.setActionCommand("/");
		ok4.setFont(ft);
		ok4.addActionListener(new OKAction());

		p=new JPanel();
		p.setBackground(new Color(255,255,255));
		p.add(A);
		p.add(num1);
		p.add(B);		
		p.add(num2);
		p.add(ok);
		p.add(ok2);
		p.add(ok3);
		p.add(ok4);
		p.add(consequent);
		p.add(num3);

		this.add(p);
		this.setVisible(true);
	}



	class OKAction implements ActionListener{
    
    
	//成员内部类  编写事件处理类(实现事件监听器接口,重写其抽象方法):内部类
		@Override
		public void actionPerformed(ActionEvent arg0) {
    
    
			// TODO Auto-generated method stub
			JPanel q = new JPanel();
			String cmd=arg0.getActionCommand();
			switch(cmd){
    
    
			case "+":{
    
    
				String NUM1=num1.getText();
				int num11;
				num11=Integer.parseInt(NUM1);

				String NUM2=new String(num2.getText());
				int num22;
				num22=Integer.parseInt(NUM2);
				
				int num33=num11+num22;
				String a=Integer.toString(num33);
				num3.setText(a);
			}
			break;

			
			case "*":{
    
    
				String NUM1=num1.getText();
				int num11;
				num11=Integer.parseInt(NUM1);

				String NUM2=new String(num2.getText());
				int num22;
				num22=Integer.parseInt(NUM2);

				int num33=num11*num22;
				String a=Integer.toString(num33);
				num3.setText(a);
			}
			break;

			
			case "-":{
    
    
				String NUM1=num1.getText();
				int num11;
				num11=Integer.parseInt(NUM1);

				String NUM2=new String(num2.getText());
				int num22;
				num22=Integer.parseInt(NUM2);

				int num33=num11-num22;
				String a=Integer.toString(num33);
				num3.setText(a);
			}
			break;


			case "/":{
    
    
				String NUM1=num1.getText();
				int num11;
				num11=Integer.parseInt(NUM1);

				String NUM2=new String(num2.getText());
				int num22;
				num22=Integer.parseInt(NUM2);

				int num33=num11/num22;
				String a=Integer.toString(num33);
				num3.setText(a);
			}
			break;
			}
		}
	}
}

(3)设计一个JAVA程序模仿记事本

设计一个JAVA程序模仿记事本(NotePad)的部分功能,界面如下图。
在这里插入图片描述
在这里插入图片描述

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class NotePad extends JFrame {
    
    

	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub
		new NotePad();
	}

	public NotePad() {
    
    
		Container c = getContentPane();
		JTextArea ta = new JTextArea(20,50);
		JScrollPane sp =new JScrollPane(ta);
		c.add(sp);
		setTitle("轩哥牌记事本");
		setBounds(500, 200, 500, 450);
		JMenuBar menupanel = new JMenuBar();
		setJMenuBar(menupanel);
		JMenu wenjian = new JMenu("文件");// 创建菜单对象
		menupanel.add(wenjian);// 将菜单对象添加到菜单栏对象中
		JMenuItem  xinjian = new JMenu("新建");
		JMenuItem  dakai = new JMenu("打开");
		JMenuItem  baocun = new JMenu("保存");
		JMenuItem  tuichu = new JMenu("退出");
		wenjian.add(xinjian);
		wenjian.add(dakai);
		wenjian.add(baocun);
		wenjian.add(tuichu);
		JMenu bianji = new JMenu("编辑");// 创建菜单对象
		menupanel.add(bianji);// 将菜单对象添加到菜单栏对象中
		
		
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

(4)设计一个学生信息管理界面

学生信息有:学号(要求唯一)、姓名、性别(录入时用单选按钮选择)、出生日期(用日期时间控件录入)、专业(用组合框选择录入)、照片。录入功能:按照上述要求将若干个学生的信息存储到数组;浏览功能:利用列表框显示所有已录入学生的信息(注意显示效果的美观);查询功能:可以分别按照学号、性别、专业查询,并将查询结果显示在列表框中。(提示:定义学生信息结构体或类,将学生信息数组定义为窗体类的成员)。要求系统的使用要进行身份验证,即在开始显示主界面之前,先显示登录窗口,进行用户名和密码的检验,只有通过验证的才能看到主界面,否则3次机会后程序结束不允许使用该系统。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44652589/article/details/114527120