为什么我的GUI不能正常工作?

时间:2015-07-25 21:05:04

标签: java swing user-interface awt

为什么GUI我可以按A,B和C但是如果我点击A然后点击它 (GUI)不会改变,反之亦然,但如果我点击B它将适用于所有人?我不明白?如果有人注意到任何错误或某些事情让我知道。 ps我是初学者,所以如果你能用外行的话来解释,请。谢谢

package Experimental;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class EventListener2 extends JFrame implements ActionListener{
    JButton a,b,c;
    JLabel aa,bb,cc;
    JPanel top, bottom;
    EventListener2(){
        super("Event Listener 2");
        setSize(300,300);
        setLayout(new FlowLayout());
        a=new JButton("A");
        aa = new JLabel("Button \"A\" was pressed");
        b=new JButton("B");
        bb = new JLabel("Button \"B\" was pressed");
        c=new JButton("C");
        cc = new JLabel("Button \"C\" was pressed");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        a.addActionListener(this);
        b.addActionListener(this);
        c.addActionListener(this);

        top=new JPanel();
        top.setLayout(new FlowLayout());
        top.add(a);
        top.add(b);
        top.add(c);
        bottom=new JPanel();

        this.add(top);
        this.add(bottom);

        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        // TODO Auto-generated method stub
        Object source = event.getSource();
        bottom.removeAll();
        if (source==a){
            bottom.add(aa);
            System.out.println("a was pressed");
        }
        else if (source==b){
            bottom.add(bb);
            System.out.println("b was pressed");
        }
        else{
            bottom.add(cc);
            System.out.println("c was pressed");
        }
        this.setVisible(true);

    }
    public static void main(String[] args) {
         EventListener2 a = new EventListener2();
    }

}

1 个答案:

答案 0 :(得分:5)

将actionPerformed方法更改为:

public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    bottom.removeAll();
    if (source==a){
        bottom.add(aa);
        System.out.println("a was pressed");
    }
    else if (source==b){
        bottom.add(bb);
        System.out.println("b was pressed");
    }
    else{
        bottom.add(cc);
        System.out.println("c was pressed");
    }
    bottom.revalidate();
    bottom.repaint();
    this.setVisible(true);
}