目录

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 ——图形用户界面设计相关推荐

  1. java上机实验学习笔记————实验七 图形用户界面设计

    java上机实验学习笔记----实验七 图形用户界面设计 题一: 计算器程序雏形 该窗口模拟Windows的计算器功能,添加一个文本行和4个按钮,单击[1].[2].[+]按钮时,将按钮的标签添加到文 ...

  2. Java 实验五 图形用户界面设计 制作一个简单的计算器

    一.实验内容: [实验内容] 1.图形界面中有一个标签.一个文本框和一个按钮,编写程序实现:点击按钮后,将文本的内容取出,作为标签文本复制给标签. (1)根据题目要求,选择合适的布局方案,添加相应的组 ...

  3. 计算机窗口设计java实验,Java银行取款异常处理计算器设计图形用户界面设计实验报告.doc...

    院 系: 计算机科学学院 专 业: 软件工程 年 级: 2007级 课程名称 java 学 号: 姓 名: 指导教师: 2010年6月1日 年级 2007级 班号 一班 学号 专业 软件工程 姓名 实 ...

  4. Java语言程序设计----- 图形用户界面设计

    Java语言程序设计----- 图形用户界面设计 1.实验目的 (1)掌握Java Swing组件的使用方法. (2)理解委托事件处理模型. (3)设计具有图形用户界面的.能够响应事件的Java应用程 ...

  5. java界面设计素材_9.java图形用户界面设计.ppt

    9.java图形用户界面设计.ppt 还剩 150页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 151v 程 ...

  6. java窗口上 显示学号和姓名_java编程 完成下图所示的图形用户界面设计,要求在界面中输入个人的班级、学号、姓名信息后,点击“...

    满意答案 wgbsourpuss 推荐于 2017.10.12 采纳率:57%    等级:9 已帮助:1414人 基本功能已经实现,望采纳import java.awt.Button; import ...

  7. Java图形用户界面设计音乐播放器

    Java图形用户界面设计音乐播放器 设计思路 音乐播放器的基础是可以播放音乐,所以要有一个实现播放音乐功能的类audioplay,图形界面就是通过动作调用audioplay里面的函数.关于实现播放器图 ...

  8. Java图形用户界面设计之概述

    文章目录 前言 一.GUI概述 1.创建 GUI 的一般步骤: (1)Component类 (2)Container类 (3)Window类 (4)Frame 类 例:建立一个Frame对象,并使之可 ...

  9. java用户界面设计教程_Java图形用户界面设计(Swing)的介绍

    前言 Swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格.Swing开发人员只用很少的代码就可以利用Swing ...

最新文章

  1. Numpy掩码数组masked arrays,这一篇就够了
  2. python基础知识资料-Python基础知识篇 列表简介
  3. js setTimeout()的使用
  4. layui 分页 固定底部_论layui的使用体验
  5. Windows Phone 7 使用启动器(Lanucher)
  6. java的map集合_Java集合之Map
  7. 计算机无法共享打印机共享的打印机驱动,打印机不能共享_打印机不能共享怎么办?-太平洋IT百科...
  8. 迅为恩智浦iTOP-IMX6开发平台
  9. [BZOJ2959] 长跑
  10. 利用Python+Gephi生成刀塔霸业棋子关系图
  11. segmentation fault
  12. 大厂秋招~华为荣耀字节腾讯美团滴滴
  13. A - 卡牌游戏 III
  14. 系统间接口调用/接口对接 Java
  15. 香港汇丰银行个人开户怎么办理?
  16. PAT 乙级 1046(划拳)
  17. css html 实现刻度,vue语法css实现刻度尺
  18. 我现在是CodeGear公司的员工了
  19. CVPR 2018 Social GAN、CVPR 2019 Sophie、NIPS 2019 Social-BiGAT、CVPR 2019 Social Ways | 基于GAN的行人轨迹预测
  20. python词汇网络分析_文本分析之制作网络关系图——Python

热门文章

  1. 韩服游戏IP用哪里的比较稳定怎么选择服务器
  2. 设计模式:可复用面向对象软件的基础
  3. OpenMV零基础教程
  4. 二叉树的遍历 中序线索二叉树
  5. 中国移动互联网公司10年战争史
  6. 什么是GRAY色彩空间
  7. 小程序下拉刷新没有三个小圆点的加载动画
  8. UG476 GT Transceivers文档翻译和自身理解
  9. Qt下 汉字转换拼音
  10. 【历史上的今天】9 月 27 日:“3Q 大战”正式打响;第一个被通缉的电脑黑客;知名“美女病毒”作者被定罪