Java面向对象实验 8 ——图形用户界面设计
目录
1、算数运算
2、算术测试
3、选课信息
4、计算随机而变
5*、菜单文本
1、算数运算
编写一个应用程序,设计一个窗体,其中有一个JCombox组件(+、-、*、/),以及2个文本框和一个富文本框,单击相应的按钮,将两个文本框的数字做算术运算,在第3个文本框中显示结果。要求处理NumberFormatException。
package OOP.work.Test8.T1;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;public class JCombox extends JFrame {public JCombox(String str){setTitle(str);init();}public void init(){setSize(500,500);JButton button=new JButton("计算");JPanel jPanel=new JPanel();JTextField s1=new JTextField(10);//定义文本框JComboBox <String> comboBox=new JComboBox<>();add(jPanel,BorderLayout.PAGE_START);comboBox.addItem("+");comboBox.addItem("-");comboBox.addItem("*");comboBox.addItem("/");JTextField s2=new JTextField(10);//定义文本框JTextArea fu=new JTextArea(10,20);setLayout(new FlowLayout());add(s1);add(comboBox);add(s2);add(button);add(fu);button.addActionListener(new AbstractAction() {//输出相应事件@Overridepublic void actionPerformed(ActionEvent e) {String shu1=s1.getText();String shu2=s2.getText();try{int sh1=Integer.parseInt(shu1);int sh2=Integer.parseInt(shu2);String fuhao=(String)comboBox.getSelectedItem();int sum = 0;//两种判断语句,哪种都可以/*if(fuhao == "+"){sum=sh1+sh2;}else if (fuhao == "-"){sum=sh1-sh2;}else if (fuhao == "*"){sum=sh1*sh2;}else if (fuhao == "/"){sum= sh1 / sh2 ;}*/switch (fuhao){case "+":sum=sh1+sh2;break;case "-":sum=sh1-sh2;break;case "*":sum=sh1*sh2;break;case "/":sum=sh1/sh2;break;}String result=shu1+fuhao+shu2+"="+sum;String dou=fu.getText();fu.setText(dou+"\n"+result);//fu.setText(shu1+fuhao+shu2+"="+sum);}catch (NumberFormatException ne){ne.printStackTrace();}}});setVisible(true);}
}class TestJComboBox{public static void main(String[] args) {new JCombox("第一题 富文本计算");}
}
结果:
2、算术测试
实验要求:编写一个算术测试小软件,用来训练小学生的算术能力。其中两个操作数及运算符都是在点击获取题目时随机生成。
程序运行效果如下图所示:
package OOP.work.Test8;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;public class ArithmrticTest extends JFrame {JTextField jtf1,jtf2,jtf3;JButton jb1,jb2;JLabel jl1,jl2,jl3;public ArithmrticTest(String str){setTitle(str);init();}public void init() {setSize(500,300);jb1=new JButton("获取题目");jb2=new JButton("确定");jtf1=new JTextField(10);jtf2=new JTextField(10);jtf3=new JTextField(10);jl1=new JLabel();jl2=new JLabel("=");jl3=new JLabel();add(jb1);add(jtf1);add(jl1);add(jtf2);add(jl2);add(jtf3);add(jb2);add(jl3);setLayout(new FlowLayout());jb1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String [] str= {"+","-","*","/"};Random rd=new Random();int a=rd.nextInt(5);jl1.setText(str[a]);jtf1.setText(String.valueOf((int)(Math.random()*100)));jtf2.setText(String.valueOf((int)(Math.random()*100))); }});jb2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {int a=Integer.parseInt(jtf1.getText());int b=Integer.parseInt(jtf2.getText());int c=Integer.parseInt(jtf3.getText());String str=jl1.getText();int res=0;switch(str) {case "+":res=a+b;break;case "-":res=a-b;break;case "*":res=a*b;break;case "/":res=a/b;break;}if(res==c)jl3.setText("计算正确");elsejl3.setText("计算错误");}});setVisible(true);}public static void main(String[] args) {ArithmrticTest t=new ArithmrticTest("随机测试");}
}
3、选课信息
编写一个应用程序,设计一个窗体,布局为BorderLayout,北面添加一个Choice组件,该组件有4个课程名称的选项。中心添加一个文本区,当选择Choice组件中的某个选项后,文本区显示对该课程的介绍。
package OOP.work.Test8.T3;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;public class Course extends JFrame {public Course(String str){setTitle(str);init();}public void init(){setSize(500,500);JButton button=new JButton("选择课程");Choice choice=new Choice();choice.add("Java Object-Oriented");//课程名为面向对象,上课时间为周四,上午3-5节课choice.add("Fundamentals of Algorithm Language");//课程名为算法,上课时间为周五,上午3-4节课choice.add("python");//课程名为python,上课时间为周三,上午1-2节课choice.add("Discrete Mathematics");//课程名为离散数学,上课时间为周二,下午1-3节课JTextArea result=new JTextArea(10,10);setLayout(new BorderLayout(10,20));add(button,BorderLayout.SOUTH);add(choice,BorderLayout.NORTH);add(result,BorderLayout.CENTER);button.addActionListener(new AbstractAction() {//输出相应事件@Overridepublic void actionPerformed(ActionEvent e) {String res=choice.getSelectedItem();String shu = null;switch (res){case "Java Object-Oriented":shu="课程名是Java面向对象,上课时间为周四,上午3-5节课";break;case "Fundamentals of Algorithm Language":shu="课程名是算法语言基础,上课时间为周五,上午3-4节课";break;case "python":shu="课程名是python,上课时间为周三,上午1-2节课";break;case "discrete mathematics":shu="课程名是离散数学,上课时间为周二,下午1-3节课";break;}result.setText(shu);}});setVisible(true);}
}class TestCourse{public static void main(String[] args) {Course course=new Course("课程信息");}
}
4、计算随机而变
编写一个有两个文本区的小应用程序,当一个文本区中输入若干个数时,另一个文本区同时对所输入的数进行求和运算并求出平均值,也就是说随着输入的变化, 另一个文本区不断地更新求和及平均值。
package OOP.work.Test8.T4;import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import java.awt.*;public class SumAndAvg extends JFrame {JTextField jTextField;JTextArea jTextArea;JLabel jNumLabel;JPanel jNumPanel, jResultPanel;public SumAndAvg() {setTitle("随机应变");setBounds(100, 100, 400, 260);setVisible(true);setLayout(new FlowLayout());setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);jNumLabel = new JLabel("请输入数字:");jNumLabel.setBounds(10, 20, 80, 25);jTextField = new JTextField(10);Document doc = jTextField.getDocument();jTextField.setBounds(100, 20, 165, 40);jTextArea = new JTextArea("结果:", 4, 18);jTextArea.setLineWrap(true);jTextArea.setEditable(false);jTextArea.append("\r\n");jTextArea.append("数据之和:");jTextArea.append("\r\n");jTextArea.append("数据平均值为:");jNumPanel = new JPanel();jResultPanel = new JPanel();jNumPanel.add(jNumLabel);jNumPanel.add(jTextField);add(jNumPanel);jResultPanel.add(jTextArea);add(jResultPanel);validate();doc.addDocumentListener(new DocumentListener() {int num;double sum = 0;double avg;int length = 0;String temp = "";@Overridepublic void insertUpdate(DocumentEvent e) {try {temp += e.getDocument().getText(e.getOffset(), e.getLength());num = Integer.parseInt(e.getDocument().getText(e.getOffset(), e.getLength()));sum += num;length += e.getLength();avg = sum / length;jTextArea.setText("数据之和:" + sum + "\r\n数据平均值:"+"\n"+ avg);} catch (BadLocationException badLocationException) {badLocationException.printStackTrace();} catch (NumberFormatException numberFormatException) {jTextArea.setText("请输入整数!");}}@Overridepublic void removeUpdate(DocumentEvent e) {try {int ret = Integer.parseInt(temp.substring(temp.length() - 1));temp = temp.substring(0, temp.length() - 1);if (length >= 0) {length -= 1;sum -= ret;avg = sum / length;jTextArea.setText("数据之和是:" + sum + "\r\n数据平均值是:"+"\n"+ avg);}} catch (NumberFormatException numberFormatException) {jTextArea.setText("请输入整数");}}@Overridepublic void changedUpdate(DocumentEvent e) {}});}public static void main(String[] args) {new SumAndAvg();}
}
5*、菜单文本
编写一个应用程序,有一个Frame窗口,窗口的中心添加了一个文本区。该窗口中有有4个菜单。每个菜单里都有菜单项,每个菜单项都对应有快捷键,选择某个菜单项时窗口中心的文本区显示某些信息。
package OOP.work.Test8.T5;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Meau extends JFrame {public Meau(String str){setTitle(str);init();}public void init(){setSize(400,500);JMenuBar jmb=new JMenuBar();//创建菜单栏对象(最上层的菜单)setJMenuBar(jmb);JMenu cd1=new JMenu("菜单1");//一级菜单名称JMenu cd2=new JMenu("菜单2");JMenu cd3=new JMenu("菜单3");JMenu cd4=new JMenu("菜单4");jmb.add(cd1);jmb.add(cd2);jmb.add(cd3);jmb.add(cd4);JMenuItem cd1_1=new JMenuItem("复制");//菜单中的菜单项(二级菜单)cd1_1.setAccelerator(KeyStroke.getKeyStroke('C', Event.CTRL_MASK));//菜单项后面的快捷键小字cd1.add(cd1_1);JMenuItem cd2_1=new JMenuItem("粘贴");cd2_1.setAccelerator(KeyStroke.getKeyStroke('D', Event.CTRL_MASK));cd2.add(cd2_1);JMenuItem cd3_1=new JMenuItem("加粗");cd3_1.setAccelerator(KeyStroke.getKeyStroke('B',Event.CTRL_MASK));cd3.add(cd3_1);JMenuItem cd4_1=new JMenuItem("字体转换");cd4_1.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK));cd4.add(cd4_1);JTextArea text=new JTextArea(10,50);setLayout(new FlowLayout());add(text);cd1_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.setText("1-1的复制快捷键");}});cd2_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.setText("2-1的粘贴 快捷键");}});cd3_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.setText("3-1的文本加粗快捷键");}});cd4_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.setText("4-1的键盘输入法转换 快捷键");}});setVisible(true);}
}class TestMenu{public static void main(String[] args) {Meau meau=new Meau("菜单文本显示");}
}
Java面向对象实验 8 ——图形用户界面设计相关推荐
- java上机实验学习笔记————实验七 图形用户界面设计
java上机实验学习笔记----实验七 图形用户界面设计 题一: 计算器程序雏形 该窗口模拟Windows的计算器功能,添加一个文本行和4个按钮,单击[1].[2].[+]按钮时,将按钮的标签添加到文 ...
- Java 实验五 图形用户界面设计 制作一个简单的计算器
一.实验内容: [实验内容] 1.图形界面中有一个标签.一个文本框和一个按钮,编写程序实现:点击按钮后,将文本的内容取出,作为标签文本复制给标签. (1)根据题目要求,选择合适的布局方案,添加相应的组 ...
- 计算机窗口设计java实验,Java银行取款异常处理计算器设计图形用户界面设计实验报告.doc...
院 系: 计算机科学学院 专 业: 软件工程 年 级: 2007级 课程名称 java 学 号: 姓 名: 指导教师: 2010年6月1日 年级 2007级 班号 一班 学号 专业 软件工程 姓名 实 ...
- Java语言程序设计----- 图形用户界面设计
Java语言程序设计----- 图形用户界面设计 1.实验目的 (1)掌握Java Swing组件的使用方法. (2)理解委托事件处理模型. (3)设计具有图形用户界面的.能够响应事件的Java应用程 ...
- java界面设计素材_9.java图形用户界面设计.ppt
9.java图形用户界面设计.ppt 还剩 150页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 151v 程 ...
- java窗口上 显示学号和姓名_java编程 完成下图所示的图形用户界面设计,要求在界面中输入个人的班级、学号、姓名信息后,点击“...
满意答案 wgbsourpuss 推荐于 2017.10.12 采纳率:57% 等级:9 已帮助:1414人 基本功能已经实现,望采纳import java.awt.Button; import ...
- Java图形用户界面设计音乐播放器
Java图形用户界面设计音乐播放器 设计思路 音乐播放器的基础是可以播放音乐,所以要有一个实现播放音乐功能的类audioplay,图形界面就是通过动作调用audioplay里面的函数.关于实现播放器图 ...
- Java图形用户界面设计之概述
文章目录 前言 一.GUI概述 1.创建 GUI 的一般步骤: (1)Component类 (2)Container类 (3)Window类 (4)Frame 类 例:建立一个Frame对象,并使之可 ...
- java用户界面设计教程_Java图形用户界面设计(Swing)的介绍
前言 Swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格.Swing开发人员只用很少的代码就可以利用Swing ...
最新文章
- Numpy掩码数组masked arrays,这一篇就够了
- python基础知识资料-Python基础知识篇 列表简介
- js setTimeout()的使用
- layui 分页 固定底部_论layui的使用体验
- Windows Phone 7 使用启动器(Lanucher)
- java的map集合_Java集合之Map
- 计算机无法共享打印机共享的打印机驱动,打印机不能共享_打印机不能共享怎么办?-太平洋IT百科...
- 迅为恩智浦iTOP-IMX6开发平台
- [BZOJ2959] 长跑
- 利用Python+Gephi生成刀塔霸业棋子关系图
- segmentation fault
- 大厂秋招~华为荣耀字节腾讯美团滴滴
- A - 卡牌游戏 III
- 系统间接口调用/接口对接 Java
- 香港汇丰银行个人开户怎么办理?
- PAT 乙级 1046(划拳)
- css html 实现刻度,vue语法css实现刻度尺
- 我现在是CodeGear公司的员工了
- CVPR 2018 Social GAN、CVPR 2019 Sophie、NIPS 2019 Social-BiGAT、CVPR 2019 Social Ways | 基于GAN的行人轨迹预测
- python词汇网络分析_文本分析之制作网络关系图——Python