【问题标题】:JAVA ActionListener for every button每个按钮的 JAVA ActionListener
【发布时间】:2018-03-22 17:53:50
【问题描述】:

我正在尝试在 java GUI 中制作简单的计算器。我已经到了可以清楚地看到代码很丑的地步,因为重复的功能如下:

number0 = new JButton("0");
    number0.setBounds(130, 280, 50, 50);
    add(number0);

number0.addActionListener(new GetNumber0());

public class GetNumber0 implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String text =number0.getText();
            int num = Integer.parseInt(text);
            result=(result*10)+num; // +num if else than 0
            lResult.setText("Result: "+result);
        }
    }

我对每个按钮都做了什么,有没有办法让这段代码看起来更好?我希望能够从每个按钮单独获取一个变量,并仅在一个名为 GetNumber() 的函数中使用它。

【问题讨论】:

  • 对于特定的复杂功能,您应该使用Action。如果您只有一组数字按钮,为什么不让它们都共享相同的ActionListener?您可以从ActionEvent 获取源代码,而不是显式引用number0
  • 是所有按钮都将调用相同的 actionsPerformed() 方法,还是每个按钮都需要不同的方法?

标签: java user-interface calculator


【解决方案1】:

您不需要创建单独的侦听器,而且您确实不应该。写String text = number0.getText(); 没有用,因为您已经知道它将是0

在按钮之间共享ActionListener

public class ButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        JButton btn = (JButton) e.getSource();
        int num = Integer.parseInt(btn.getText());
        result=(result*10)+num;
        lResult.setText("Result: "+result);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多