Schönen guten Abend zusammen,
Kurzbeschreibung meines Problems (vereifachte Darstellung):
Ich habe einen Frame, der nur einen JButton beinhaltet. Sofern dieser geklickt wird, sollte sich ein weiterer JButton in das Frame setzen. Um die Neuberechnung anzustoßen, habe ich Methode
auf meiner ContentPane aufgerufen (Siehe Quellcode). Nun fällt mir auf, dass wenn ich das Frame größer ziehe, und anschließend den JButton klicke, der neuhinzugefügt JButton flackert.
Nun meine Frage: Wo liegt genau mein Fehler? Meine Vermutung war, dass ich eine falsche Methode zur Neuberechnung aufgerufen habe. Dies hat allerdings keinen Unterschied bei der Implementierung der anderen Methoden (validate(), invalidate() und revalidate() ) gemacht.
Über jeden Tipp in die richtige Richtung bin ich sehr dankbar.
Gruß
Kurzbeschreibung meines Problems (vereifachte Darstellung):
Ich habe einen Frame, der nur einen JButton beinhaltet. Sofern dieser geklickt wird, sollte sich ein weiterer JButton in das Frame setzen. Um die Neuberechnung anzustoßen, habe ich Methode
Java:
validate()
Nun meine Frage: Wo liegt genau mein Fehler? Meine Vermutung war, dass ich eine falsche Methode zur Neuberechnung aufgerufen habe. Dies hat allerdings keinen Unterschied bei der Implementierung der anderen Methoden (validate(), invalidate() und revalidate() ) gemacht.
Java:
/* IMPORT: */
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class ZeichenApp {
private final JFrame frame;
private final String TITLE = "Draw Application";
private Container con;
private JButton btnAdd;
private JButton btnInfo;
private boolean painted = false;
public ZeichenApp() {
frame = new JFrame();
frame.setTitle(TITLE);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createWidgets();
addWidgets();
setup();
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void createWidgets() {
con = frame.getContentPane();
con.setLayout(new BorderLayout(5, 5));
btnAdd = new JButton("Add note");
btnInfo = new JButton("Information");
}
private void addWidgets() {
con.add(btnAdd, BorderLayout.CENTER);
}
private void setup() {
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!painted) {
con.add(btnInfo, BorderLayout.PAGE_END);
con.validate();
painted = true;
}
}
});
}
}
Über jeden Tipp in die richtige Richtung bin ich sehr dankbar.
Gruß