Java语言程序设计 上机实验6
实验目的:
掌握Java的图形用户界面编程,掌握布局管理器和事件的响应方法。
实验内容:标(*)为选做内容
- 输入两个整数,分别进行加、减、乘、除等算术运算,界面如下图所示。
要求:
1) 采用Swing组件设计图形用户界面,采用3个文本行JTextField分别表示两个操作数和运算结果,其中表示运算结果的文本行只能显示,不能输入;采用组合框JComboBox提供多种算数运算符的选择方式,组合框只能在下拉列表中选择,不能编辑。
2) 文本行要响应单击事件,组合框要响应选择事件。两个事件处理方法执行由组合框指定的算术运算。
3) 进行异常处理。当文本行中的字符串不能转换成整数时,弹出对话框显示指定信息,提示用户重新输入。
- (*) 显示字符串中每个字符的Unicode值,参考下图。
提示:使用表格组件,表格大小根据字符串长度变化。
实验要求:
1. 在实验报告中给出程序运行结果截图。
2. 源程序代码附到实验报告的最后。
3. 认真填写实验报告并妥善存档,在下次上机实验课之前发送电子版实验报告至 wsycup@foxmail.com。
注意,“邮件标题”与“附件实验报告文件名”均为:
Java1实验报告N_学号_姓名
其中N为阿拉伯数字,指第几次实验,例如:
Java1实验报告3_ 2012010400_李雷
请严格按照规定的格式发送邮件(注意标题中“Java”后的数字“1”),邮件标题不符合格式要求等同于未交作业,并在规定的时间发送实验报告邮件,过期无效。
4. 实验报告雷同者将不能得到相应的平时分。
附录:实验报告
实验题目__实验6_______
学号_2014011329__ 姓名_许恺____ 班级__计算机14-1__ 时间__2016.5.11____
实验题目解答
附:源程序
package com.Test6; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Test6 extends JFrame implements ActionListener{ private JTextField tex1,tex2,fin; private JLabel jl; private MessageJDialog jd; private JComboBox box; private static String fuhao[]={"+","-","*","/"}; int i; public Test6(){ super("整数计算器"); this.setBounds(300,240,420,80); this.setResizable(false); this.setBackground(java.awt.Color.lightGray); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT)); tex1=new JTextField(10); this.getContentPane().add(tex1); tex1.setHorizontalAlignment(JTextField.LEFT); tex1.addActionListener(this); box=new JComboBox<String>(fuhao); box.addActionListener(this); box.setEditable(false); this.getContentPane().add(box); tex2=new JTextField(10); this.getContentPane().add(tex2); tex2.setHorizontalAlignment(JTextField.LEFT); tex2.addActionListener(this); jl=new JLabel("="); this.getContentPane().add(jl); jl.setHorizontalAlignment(JTextField.LEFT); fin=new JTextField(10); this.getContentPane().add(fin); fin.setHorizontalAlignment(JTextField.LEFT); fin.setEditable(false); fin.addActionListener(this); jd=new MessageJDialog(this); this.setVisible(true); } private class MessageJDialog extends JDialog { JLabel jla; JFrame Frame; MessageJDialog(JFrame Frame) { super(Frame,"警告",true); this.Frame=Frame; this.setSize(300,80); jla=new JLabel("111",JLabel.CENTER); this.getContentPane().add(jla); this.setDefaultCloseOperation(HIDE_ON_CLOSE); } void show(String message) { jla.setText(message); this.setLocation(Frame.getX()+100,Frame.getY()+100); this.setVisible(true); } } public void actionPerformed(ActionEvent a){ if(a.getSource()==box) { i=box.getSelectedIndex(); } if(a.getSource()==tex2||a.getSource()==tex1) { String str = null; try { if(i==0) { Integer x=Integer.parseInt(tex1.getText()); Integer y=Integer.parseInt(tex2.getText()); str=Integer.toString(x+y); } else if(i==1) { Integer x=Integer.parseInt(tex1.getText()); Integer y=Integer.parseInt(tex2.getText()); str=Integer.toString(x-y); } else if(i==2) { Integer x=Integer.parseInt(tex1.getText()); Integer y=Integer.parseInt(tex2.getText()); str=Integer.toString(x*y); } else if(i==3) { Integer x=Integer.parseInt(tex1.getText()); Integer y=Integer.parseInt(tex2.getText()); if(y==0) { jd.show("除数不能为0"); tex1.setText(""); tex2.setText(""); fin.setText(""); } else str=Integer.toString(x/y); } fin.setText(str); } catch(NumberFormatException e1) { jd.show("请输入整数"); tex1.setText(""); tex2.setText(""); fin.setText(""); } finally{}; /*try{ int x=Integer.parseInt(tex1.getText()); int y=Integer.parseInt(tex2.getText()); if(box.getSelectedIndex()==0) fin.setText(Integer.toString(x+y)); if(box.getSelectedIndex()==1) fin.setText(Integer.toString(x-y)); if(box.getSelectedIndex()==2) fin.setText(Integer.toString(x*y)); if(box.getSelectedIndex()==3&&tex2.getText()!="0") fin.setText(Integer.toString(x/y)); } catch(NumberFormatException e1){ jla.show("您输入的字符不能转换成整型,请重新输入!"); }*/ } } public static void main(String[] args){ // TODO Auto-generated method stub new Test6(); } }