优化这段代码import javax.swing.*; import java.awt.*; class Calculator { public void init() { JFrame f=new JFrame("计算器"); f.setSize(400,200); f.setVisible(true); f.setLocationRelativeTo(null); JPanel p=new JPanel(new GridLayout(6,4,4,4)); p.setBackground(Color.white); JTextField tf=new JTextField(100); tf.setBorderLayout.NORTH; p.add(tf); JButton button1=new JButton(" % "); JButton button2=new JButton(" CE "); JButton button3=new JButton(" C "); JButton button4=new JButton(" ← "); JButton button5=new JButton(" 1/X "); JButton button6=new JButton(" X2 "); JButton button7=new JButton(" 2√X "); JButton button8=new JButton(" ÷ "); JButton button9=new JButton(" 7 "); JButton button10=new JButton(" 8 "); JButton button11=new JButton(" 9 "); JButton button12=new JButton(" × "); JButton button13=new JButton(" 4 "); JButton button14=new JButton(" 5 "); JButton button15=new JButton(" 6 "); JButton button16=new JButton(" - "); JButton button17=new JButton(" 1 "); JButton button18=new JButton(" 2 "); JButton button19=new JButton(" 3 "); JButton button20=new JButton(" + "); JButton button21=new JButton("+/-"); JButton button22=new JButton(" 0 "); JButton button23=new JButton(" . "); JButton button24=new JButton(" = "); button24.setBackground(Color.blue); f.add(p); p.add(button1);p.add(button2);p.add(button3);p.add(button4);p.add(button5); p.add(button6);p.add(button7);p.add(button8);p.add(button9);p.add(button10); p.add(button11);p.add(button12);p.add(button13);p.add(button14);p.add(button15); p.add(button16);p.add(button17);p.add(button18);p.add(button19);p.add(button20); p.add(button21);p.add(button22);p.add(button23);p.add(button24); } } public class TestCalculator { public static void main(String[] args) { new Calculator().init(); } }
时间: 2023-06-20 15:08:51 浏览: 120
1. 将界面的初始化操作放在Swing的事件分发线程中进行,避免界面卡顿问题。
2. 使用布局管理器来布局组件,而不是直接设置组件的位置和大小。GridLayout可以自动调整组件的大小和位置,使得布局更加灵活。
3. 为按钮添加事件监听器,当用户点击按钮时可以执行相应的操作。
4. 为了提高代码的可读性,可以将按钮的创建和添加操作放在一个方法中,并通过循环来创建和添加按钮。
下面是优化后的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
private JTextField tf;
public void init() {
//将界面初始化操作放在Swing的事件分发线程中进行
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("计算器");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 200);
f.setLocationRelativeTo(null);
JPanel p = new JPanel(new GridLayout(6, 4, 4, 4));
p.setBackground(Color.white);
tf = new JTextField(100);
tf.setHorizontalAlignment(JTextField.RIGHT);
p.add(tf);
//创建按钮并添加事件监听器
addButton(p, "%");
addButton(p, "CE");
addButton(p, "C");
addButton(p, "←");
addButton(p, "1/X");
addButton(p, "X2");
addButton(p, "2√X");
addButton(p, "÷");
addButton(p, "7");
addButton(p, "8");
addButton(p, "9");
addButton(p, "×");
addButton(p, "4");
addButton(p, "5");
addButton(p, "6");
addButton(p, "-");
addButton(p, "1");
addButton(p, "2");
addButton(p, "3");
addButton(p, "+");
addButton(p, "+/-");
addButton(p, "0");
addButton(p, ".");
addButton(p, "=").setBackground(Color.blue);
f.add(p);
f.setVisible(true);
}
});
}
//创建按钮并添加到面板上
private void addButton(JPanel panel, String text) {
JButton button = new JButton(text);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//处理按钮点击事件
}
});
panel.add(button);
}
public static void main(String[] args) {
new Calculator().init();
}
}
阅读全文