如何根据之前选择的JButton更改JPanel的内容?

时间:2014-04-01 06:01:02

标签: java swing jpanel jbutton actionlistener

我正在为社区制作界面。选项包括“添加人员”,“添加到家庭”和“从家庭中删除成员”。我认为制作多个JPanels非常耗时,所以我使JPanel依赖于用户的“选择”。例如,

if(choice == 1)
 {
        addPTitle = new JLabel("ADD PERSON");
        addPTitle.setHorizontalAlignment(SwingConstants.CENTER);
        addPTitle.setBounds(75,20,350,50);
        addPTitle.setFont(calibri);
        addPTitle.setForeground(red);
    }
    else if(choice == 2)
    {
        addPTitle = new JLabel("ADD TO FAMILY");
        addPTitle.setHorizontalAlignment(SwingConstants.CENTER);
        addPTitle.setBounds(75,20,350,50);
        addPTitle.setFont(calibri);
        addPTitle.setForeground(red);
    }
    else if(choice == 3)
    {
        addPTitle = new JLabel("REMOVE MEMBER");
        addPTitle.setHorizontalAlignment(SwingConstants.CENTER);
        addPTitle.setBounds(75,20,350,50);
        addPTitle.setFont(calibri);
        addPTitle.setForeground(red);
    }

当我手动更改选择值时它工作正常但是当我尝试为按钮本身添加ActionListener时,选择的值没有改变,JPanel的内容也是如此显示的仍然是我手动设置的值。这是ActionListener的代码:

private class ButtonHandler implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == "ADD PERSON")
        {
            choice = 1;
            frame.setContentPane(addP);
            frame.invalidate();
            frame.validate();
        }
        else if(e.getSource() == "ADD TO FAMILY"){
            choice = 2;
            frame.setContentPane(addP);
            frame.invalidate();
            frame.validate();
        }
        else if(e.getSource() == "REMOVE MEMBER FROM FAMILY"){
            choice = 3;
            frame.setContentPane(addP);
            frame.invalidate();
            frame.validate();
        }

2 个答案:

答案 0 :(得分:2)

e.getSource()返回一个对象。您正在尝试将其与字符串进行比较。相反,您可以使用e.getActionCommand()(假设您没有更改动作命令)

此外,如果您受到限制,请不要将字符串与==进行比较。使用equals

if ("ADD PERSON".equals(e.getActionCommand()) {}

或者,如果您的按钮范围可在ActionListener中访问,则可以比较对象

if (e.getSource() == addPersonButton) {}

另一个选项,如果出于任何原因 更改动作命令,您还可以使用按钮的文本进行比较

JButton button = (JButton)e.getSource();
String text = button.getText();
if ("ADD PERSON".equals(text)) {}

SIDE NOTE

答案 1 :(得分:1)

你应该重新验证你的面板。

使用Jpanel.revalidate()。