一、实验目的
掌握Java的图形用户界面编程,掌握布局管理器和事件的响应方法。
二、实验内容
输入两个整数,分别进行加、减、乘、除等算术运算,界面如下图所示:
要求:
1)采用Swing组件设计图形用户界面,采用3个文本行JTextField分别表示两个操作数和运算结果,其中表示运算结果的文本行只能显示,不能输入;采用组合框JComboBox提供多种算数运算符的选择方式,组合框只能在下拉列表中选择,不能编辑。
2)文本行要响应单击事件,组合框要响应选择事件。两个事件处理方法执行由组合框指定的算术运算。
3)进行异常处理。当文本行中的字符串不能转换成整数时,弹出对话框显示指定信息,提示用户重新输入。
三、实验过程
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.Color;
public class Mathwindow {
public JFrame frame;
public JTextField textField;
public JTextField textField_1;
public JComboBox<Object> comboBox_1;
public JLabel lblNewLabel_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Mathwindow window = new Mathwindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Mathwindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setTitle("\u6574\u6570\u7684\u7B97\u672F\u8FD0\u7B97");
frame.setBounds(100, 100, 575, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textField = new JTextField();
textField.setFont(new Font("宋体", Font.PLAIN, 24));
textField.setBounds(23, 85, 120, 40);
frame.getContentPane().add(textField);
textField.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("");
lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel_1.setBounds(380, 85, 127, 40);
frame.getContentPane().add(lblNewLabel_1);
JLabel lblNewLabel = new JLabel("=");
lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel.setBounds(358, 85, 26, 40);
frame.getContentPane().add(lblNewLabel);
textField_1 = new JTextField();
textField_1.setFont(new Font("宋体", Font.PLAIN, 24));
textField_1.setBounds(228, 85, 120, 40);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
lblNewLabel_2 = new JLabel("");
lblNewLabel_2.setForeground(new Color(255, 0, 0));
lblNewLabel_2.setFont(new Font("宋体", Font.PLAIN, 24));
lblNewLabel_2.setBounds(23, 151, 266, 40);
frame.getContentPane().add(lblNewLabel_2);
String Math[]={" ","+","-","*","/"};
comboBox_1=new JComboBox<Object>(Math);
comboBox_1.setBackground(new Color(230, 230, 250));
comboBox_1.setFont(new Font("宋体", Font.PLAIN, 24));
comboBox_1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED) {
String n=(String) e.getItem();
try {
String s =textField.getText();
String f =textField_1.getText();
double x=Double.parseDouble(s);
double y=Double.parseDouble(f);
double w;
if(n.equals("+")) {
w=x+y;
lblNewLabel_1.setText(""+w);
}
else if(n.equals("-")) {
w=x-y;
lblNewLabel_1.setText(""+w);
}
else if(n.equals("*")) {
w=x*y;
lblNewLabel_1.setText(""+w);
}
else if(n.equals("/")) {
w=x/y;
lblNewLabel_1.setText(""+w);
}
else {
lblNewLabel_1.setText("");
}
}catch(Exception ex) {
lblNewLabel_2.setText("请输入数字!!!");
}
}
}
});
comboBox_1.setBounds(153, 85, 65, 40);
frame.getContentPane().add(comboBox_1);
}
}
结果: