为什么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();
}
}
答案 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);
}