java - 如何输入、计算和更新JLabel?

标签 java swing netbeans jlabel

所以我正在创建一个标准银行账户余额为 500 的程序。该程序询问用户是否要提取或存入资金,然后计算他们提取或存入的金额并更新当前余额。为什么它不起作用,我该如何解决?

public class MyFrame extends JFrame {

    private JPanel panel;
    private JLabel wordsLabel;
    private JLabel balanceLabel;
    private JLabel choiceLabel;
    private JTextField transactionAmount;
    private JButton depositButton;
    private JButton withdrawButton;
    private double balance;

    public MyFrame() {
        final int FIELD_WIDTH = 10;
        balance = 500;
        panel = new JPanel();
        wordsLabel = new JLabel();
        balanceLabel = new JLabel();
        choiceLabel = new JLabel();
        transactionAmount = new JTextField(FIELD_WIDTH);
        JPanel buttonPanel = new JPanel();
        ButtonGroup myGroup = new ButtonGroup();
        //panel.setLayout(new BorderLayout());
        depositButton = new JButton("Deposit");
        withdrawButton = new JButton("Withdraw");
        transactionAmount.setText("0");
        wordsLabel.setText("Welcome to Wes Banco! Your current balance is: ");
        balanceLabel.setText("500");
        choiceLabel.setText("How much would you like to deposit/withdraw?");
        panel.add(wordsLabel);
        panel.add(balanceLabel);
        panel.add(choiceLabel);
        panel.add(transactionAmount);
        myGroup.add(depositButton);
        myGroup.add(withdrawButton);
        buttonPanel.add(depositButton);
        buttonPanel.add(withdrawButton);
        panel.add(depositButton);

        ButtonListener myListener = new ButtonListener();
        depositButton.addActionListener(myListener);
        withdrawButton.addActionListener(myListener);

        panel.add(buttonPanel);
        this.add(panel);
    }

    class ButtonListener implements ActionListener {

        public void actionPerformed(ActionEvent event) {
            double amount = Double.parseDouble(transactionAmount.getText());
            if (amount == 0) {
                JOptionPane.showMessageDialog(null, "Enter an amount");
            }
            if (depositButton.isSelected()) {
                balanceLabel.setText("" + 500 + amount);
                JOptionPane.showMessageDialog(null, 
                     "You have deposited: " + amount);
            }
            if (withdrawButton.isSelected()) {
            }
        }
    }
}

最佳答案

您没有在 actionPerformed 方法中使用正确的“if”。你应该使用:

if (event.getSource() == depositButton) {
    //recalculate
}

代替:

if (depositButton.isSelected()) {
        //recalculate
}

isSelected() 不是了解 JButton 是否被单击的正确方法。您必须将点击事件的来源与您的按钮进行比较。

关于java - 如何输入、计算和更新JLabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17809313/

相关文章:

Java 用异常处理覆盖 compareTo

java - 如何向带边框的 JPanel 添加填充

java - 如何测量由单个字符串呈现并受宽度限制的文本的高度,以便它是多行的?

java - 有没有办法排除正则表达式中的单词或语音?

java - 我应该为 netbeans 使用什么 JDK?

java - 如何在没有jar文件的情况下在命令行中编译和运行Netbeans java项目?

java - map : In Java Maps can I assign a function to the value in the <K, V> 对?

java - 组织/dom4j/DocumentException

java - Maven WAR 项目中静态文件的首选文件位置

java - 是否可以将按键或组件事件发送到第 3 方 swing 应用程序