单击按钮时更改面板

时间:2013-07-24 06:40:25

标签: java swing jpanel jbutton actionlistener

所以这是我的问题:

我想创建一个新面板,要求用户输入银行帐户信息(帐户名称和帐号),当用户点击“登录”按钮时,它会将面板更改为“提取/存款”面板并显示您的帐户名称位于顶部。我已经完成了提款/存款面板,但我很难知道如何创建信息面板并使其显示在提款/存款面板等之前。

这是我的代码:

public class MyFrame extends JFrame {

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

    public MyFrame() {
        final int FIELD_WIDTH = 5;
        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();
        depositButton = new JRadioButton("Deposit");
        withdrawButton = new JRadioButton("Withdraw");
        transactionAmount.setText("0");
        wordsLabel.setText("Welcome to Wes Banco! Your current balance is: ");
        balanceLabel.setText(String.format("%10.2f", balance));
        choiceLabel.setText("How much would you like to deposit/withdraw? ");
        panel.setLayout(new GridLayout(4, 4, 5, 10));
        panel.add(wordsLabel);
        panel.add(balanceLabel);
        panel.add(choiceLabel);
        panel.add(transactionAmount);
        myGroup.add(depositButton);
        myGroup.add(withdrawButton);
        buttonPanel.add(depositButton);
        buttonPanel.add(withdrawButton);
        ButtonListener myListener = new ButtonListener();
        depositButton.addActionListener(myListener);
        withdrawButton.addActionListener(myListener);    
        panel.add(buttonPanel);
        this.add(panel);
    }

    class ButtonListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent event) {
            double amount = Double.parseDouble(transactionAmount.getText());
            if (amount == 0) {
                JOptionPane.showMessageDialog(null, 
                       "You cannot deposit or withdraw nothing!");
                JOptionPane.showMessageDialog(null, 
                       "Please enter a valid amount.");
            } else {
                if (event.getSource() == depositButton) {
                    JOptionPane.showMessageDialog(null,
                            "You have deposited: " + amount);
                    balance += amount;
                } else if (event.getSource() == withdrawButton) {
                    if (balance < amount) {
                        JOptionPane.showMessageDialog(null,
                                "You do not have sufficient funds to complete this transaction.");
                        JOptionPane.showMessageDialog(null,
                                "Please enter a valid amount.");
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "You have withdrawn: " + amount);
                        balance -= amount;
                    }
                }
                balanceLabel.setText(String.valueOf(balance));
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我的建议是:不要在JFrame构造函数中创建面板。创建一个InfoPanel类和一个WithdrawPanel类。然后,您可以以编程方式决定在框架中显示哪个面板。