实现一个Java Application图形界面程序,能够实现两数相减、相除的功能,具体要求:

2025-01-05 10:34:32
推荐回答(1个)
回答1:

package demo.com;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class NumTest {

private JFrame frame;
private JTextField num1;
private JTextField num2;
private JTextField sum;

/**
 * Launch the application.
 */
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
NumTest window = new NumTest();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
 * Create the application.
 */
public NumTest() {
initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
frame = new JFrame();
frame.setTitle("数学计算");
frame.setBounds(100, 100, 298, 177);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

num1 = new JTextField();
num1.setBounds(10, 37, 120, 21);
frame.getContentPane().add(num1);
num1.setColumns(10);

num2 = new JTextField();
num2.setBounds(152, 37, 120, 21);
frame.getContentPane().add(num2);
num2.setColumns(10);

JLabel lblNewLabel = new JLabel("请输入两个数字");
lblNewLabel.setBounds(10, 12, 100, 15);
frame.getContentPane().add(lblNewLabel);

JButton btn1 = new JButton("相加");
btn1.setBounds(10, 68, 120, 23);
btn1.addActionListener(listener);
frame.getContentPane().add(btn1);

JButton btn2 = new JButton("相乘");
btn2.setBounds(152, 68, 120, 23);
btn2.addActionListener(listener);
frame.getContentPane().add(btn2);

JLabel label = new JLabel("结果:");
label.setBounds(42, 104, 42, 15);
frame.getContentPane().add(label);

sum = new JTextField();
sum.setBounds(115, 101, 140, 21);
frame.getContentPane().add(sum);
sum.setColumns(10);
}

ActionListener listener = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
String numstr1 = num1.getText().trim();
String numstr2 = num2.getText().trim();
if (!isNumeric(numstr1)) {
JOptionPane.showMessageDialog(frame.getContentPane(), "第一个数字输入不规范!", "系统信息", JOptionPane.ERROR_MESSAGE);
num1.setText("");
return;
}

if (!isNumeric(numstr2)) {
JOptionPane.showMessageDialog(frame.getContentPane(), "第二个数字输入不规范!", "系统信息", JOptionPane.ERROR_MESSAGE);
num2.setText("");
return;
}
float f1 = Float.parseFloat(numstr1);
float f2 = Float.parseFloat(numstr2);
switch (e.getActionCommand()) {
case "相乘":

sum.setText(f1 * f2 + "");
break;
case "相加":
sum.setText(f1 + f2 + "");
break;

default:
break;
}

}
};

public boolean isNumeric(String str) {
Pattern pattern = Pattern.compile("-?[0-9]+.?[0-9]+");
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
}