简单计算器,在JButton数组中创建所有按钮并添加操作

时间:2014-12-07 22:36:14

标签: java swing jbutton actionlistener

我是自学java初学者

我正在尝试使用java swing创建简单的计算器,我想创建JButtons数组来创建项目中的所有按钮,我有一些问题,所以我声明构造函数之外的所有变量

public class SimpleCalculator extends JFrame implements ActionListener {
JButton btnArray[] = new JButton[16];
JLabel nameLabel = new JLabel("Ghanayem's Calculator",
        SwingConstants.CENTER);
JTextField txt = new JTextField();
JPanel numPanel = new JPanel(new GridLayout(4, 3, 15, 5));
JPanel opPanel = new JPanel(new GridLayout(4, 1, 0, 5));
JPanel panel = new JPanel(new GridLayout(2, 1, 0, 5));
int counter;
char operation;
double operand1;
double operand2;

就像这样,我想在for循环中向按钮添加动作没有编译错误,每件事都可以

for (counter = 0; counter < 10; counter++) {

        btnArray[counter] = new JButton("" + counter);
        btnArray[counter].addActionListener(this);
    }

这里是行动执行

@Override
public void actionPerformed(ActionEvent e) {
    txt.setText(txt.getText() + counter);
}

就像那样,当我尝试运行程序并按下任意数字按钮时,所有按钮上添加到文本字段的数字都是“16”,这是主要方法

public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                SimpleCalculator frame = new SimpleCalculator();
                frame.setVisible(true);
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.setResizable(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

我越来越疯狂我不知道出了什么问题,我需要你的帮助这是我的第一个挥杆应用程序我是如此绝望

谢谢

2 个答案:

答案 0 :(得分:1)

尝试这样的事情(我现在无法测试,因此它可能包含一些较小的错误):

@Override
public void actionPerformed(ActionEvent e) {
    String value = ((JButton)e.getSource()).getText();
    Integer intValue = Integer.parseInt(value);
    Integer intValue2 = Integer.parseInt(txt.getText());
    txt.setText( "" + (intValue + intValue2));
}

答案 1 :(得分:0)

@Override
public void actionPerformed(ActionEvent e) {
    JButton b = (JButton) e.getSource();
    txt.replaceSelection(b.getActionCommand());

}

这是我在这里找到的问题的解决方案 java-action-listener

@Override
public void actionPerformed(ActionEvent e) {
    String value = (JButton) e.getSource().getText();
    txt.setText(txt.getText() + value);

}

这是另一个解决方案@Paco Abato帮助我找到