实 验 报 告
( 2017 / 2018学年 第2学期)
课程名称 |
JAVA语言程序设计 |
|||||
实验名称 |
Java集成开发环境的安装与使用、 Java变量、表达式与控制结构 |
|||||
实验时间 |
2018 |
年 |
6 |
月 |
7 |
日 |
指导单位 |
计算机学院软件教学中心 |
|||||
指导教师 |
许棣华 |
学生姓名 |
王利国 |
班级学号 |
B160209 |
学院(系) |
电子与光学工程学院,微电子学院 |
专 业 |
微电子科学与工程 |
实验名称 |
方法、数组和类 |
指导教师 |
许棣华 |
||||||||
实验类型 |
上机 |
实验学时 |
2 |
实验时间 |
2017.6.7 |
一、 实验目的 1. 了解和掌握Java中GUI组件和界面化设计 2. 掌握Java中创建线程对象的方法 3. 熟悉控制线程状态的过程 |
二、实验环境(实验设备) 1. 每位学生配备计算机一台 2. 计算机需安装好JDK和Jcreator |
三、实验内容
1. 编写一个Applet,利用两个文本框对象input1和input2,接收用户从键盘输入的两个整型数。当用户单击“计算”按钮时,可进行算术计算,并输出运算结果;运算结果放在多行文本域JTextArea组件中。GUI界面参考教材198页9.6题。
package swing; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * @Author liguo * @Description * @Data 2018-06-04 20:06 */ public class Test { public static void main(String[] args) { // 创建 JFrame 实例 JFrame frame = new JFrame( "四则运算" ); frame.setSize( 350, 300 ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); /* 创建面板,这个类似于 HTML 的 div 标签 * 我们可以创建多个面板并在 JFrame 中指定位置 * 面板中我们可以添加文本字段,按钮及其他组件。 */ JPanel panel = new JPanel(); //添加面板 frame.add( panel ); /* * 调用用户定义的方法并添加组件到面板 */ placeComponents( panel ); // 设置界面可见 frame.setVisible( true ); } private static void placeComponents(JPanel panel) { panel.setLayout( null ); // 创建 JLabel JLabel firstLabel = new JLabel( "第一个数为" ); /* 这个方法定义了组件的位置。 * setBounds(x, y, width, height) * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 */ firstLabel.setBounds( 10, 20, 80, 25 ); panel.add( firstLabel ); //field JTextField firstNumber = new JTextField( 20 ); firstNumber.setBounds( 100, 20, 165, 25 ); panel.add( firstNumber ); // 输入的文本域 JLabel secondlabe2 = new JLabel( "第二个数字" ); secondlabe2.setBounds( 10, 50, 80, 25 ); panel.add( secondlabe2 ); /** * 第二个数字的输入 */ JTextField secondNumber = new JTextField( 20 ); secondNumber.setBounds( 100, 50, 165, 25 ); panel.add( secondNumber ); // 创建计算按钮 JButton loginButton = new JButton( "计算" ); loginButton.setBounds( 10, 80, 80, 25 ); panel.add( loginButton ); //添加页面输出 JTextArea area = new JTextArea(); area.setBounds( 100, 110, 165, 100 ); panel.add( area ); loginButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int a = Integer.parseInt( firstNumber.getText() ); int b = Integer.parseInt( secondNumber.getText() ); String str = "和为" + (a + b) + " 差为" + (a - b) + " 积为" + (a * b) + " 商为" + (a / b); area.append( str ); } } ); } }
2. 编写一个应用程序,设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,有3个文本框。单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。
package swing; /** * @Author liguo * @Description 设计4个按钮,分别命名为“加”、“减”、“乘”、“除”,另外,窗口中还有3个文本框。 * 单击相应的按钮,将两个文本框的数字做运算,在第三个文本框中显示结果。要求处理NumberFormatException异常。 * @Data 2018-06-29 20:34 */ import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class Caculate extends JFrame implements ActionListener { JButton jia; JButton jian; JButton cheng; JButton chu; JTextField one; JTextField two; JTextField three; JLabel label; public Caculate() { init(); setVisible(true); setResizable(true); validate(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void init() { setLayout(new FlowLayout()); setSize(300, 320); setTitle("计算"); jia = new JButton("加"); jian = new JButton("减"); cheng = new JButton("乘"); chu = new JButton("除"); one = new JTextField(10); two = new JTextField(10); three = new JTextField(10); label = new JLabel(" ", JLabel.CENTER); label.setBackground(Color.green); add(one); add(label); add(two); add(three); add(jia); add(jian); add(cheng); add(chu); jia.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { double n; if (e.getSource() == jia) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 + n2; three.setText(String.valueOf(n)); label.setText("+"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == jian) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 - n2; three.setText(String.valueOf(n)); label.setText("-"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == cheng) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 * n2; three.setText(String.valueOf(n)); label.setText("*"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } else if (e.getSource() == chu) { double n1, n2; try { n1 = Double.parseDouble(one.getText()); n2 = Double.parseDouble(two.getText()); n = n1 / n2; three.setText(String.valueOf(n)); label.setText("/"); } catch (NumberFormatException ee) { three.setText("请输入数字字符"); } } validate(); } public static void main(String[] args) { Caculate test = new Caculate(); } }
//那个用JFormDesigner插件是好写 ,就是生成的代码量太多了,现在这个是重写的;
3. 编写一个有两个线程的程序,第一个线程用来计算2~100000之间的质数及个数,第二个线程用来计算100000~200000之间的质数及个数。
package swing; /** * @Author liguo * @Description * @Data 2018-06-07 9:26 */ public class Thread extends java.lang.Thread { public static void run(int min, int max) { int i, j; for (i = min; i <= max; i++) { for (j = 2; j < (int) Math.sqrt( i ); j++) { if (i % j == 0) break; else System.out.print( i ); count++; } System.out.println( min + " " + max + ":" + count ); } } private int min, max; private static int count = 0; public static void main(String[] args) { Thread t1 = new Thread(); Thread t2 = new Thread(); t1.run( 2, 100000 ); t2.run( 100000, 20000 ); } }
四、实验小结(包括问题和解决方法、心得体会等) 1:此次实验加深了自己对于swing的使用,尤其是几种布局的格式,以及控件按钮方法的书写。学会了通过插件JFormDesigner来写Swing界面做类似计算器的东西。 2:学习了用线程来写控制程序。 |
|||||
五、指导教师评语 |
|||||
成 绩 |
批阅人 |
日 期 |