G
Gast
Gast
Hi,
ich möchte in einem BorderLayout die CENTER-Fläche nach dem Auftreten eines ActionEvents ändern. Das ActionEvent wird von einem Element auf dieser CENTER-Fläche ausgelöst, was nach dem Austausch verschwunden ist. Ist das möglich? Ich häng mal ein kurzes Bespiel an, was das Problem in Kurzform wiederspiegelt. Der Button, der das ActionEvent auslöst, soll durch ein Label ersetzt werden. Wieso funktioniert das so nicht?
ich möchte in einem BorderLayout die CENTER-Fläche nach dem Auftreten eines ActionEvents ändern. Das ActionEvent wird von einem Element auf dieser CENTER-Fläche ausgelöst, was nach dem Austausch verschwunden ist. Ist das möglich? Ich häng mal ein kurzes Bespiel an, was das Problem in Kurzform wiederspiegelt. Der Button, der das ActionEvent auslöst, soll durch ein Label ersetzt werden. Wieso funktioniert das so nicht?
Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test implements ActionListener {
public Test(){
f = new JFrame();
p = new JPanel();
f.add(p);
p.setLayout(new BorderLayout());
b = new JButton("Ok");
b.addActionListener(this);
p.add(b, BorderLayout.CENTER);
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.setSize( 300, 200 );
f.setVisible( true );
}
private JPanel p;
private JFrame f;
private JButton b;
private JLabel l;
public void setFrame(JFrame f){
this.f = f;
}
public JFrame getFrame(){
return f;
}
public static void main(String[] args)
{
Test ft = new Test();
}
public void actionPerformed(ActionEvent arg0) {
p.remove(b);
l = new JLabel("aaaa");
p.add(l, BorderLayout.CENTER);
p.repaint();
}
}