Ich habe ein Problem bei der Aktualisierung eines JPanels.
Der Code:
GUI_neuesFenster.java
GUI_fenster1.java (die Klasse ruft Methoden in GUI_neuesFenster.java auf, um das Fenster zu erstellen)
Und zum Schluss noch Main.java (Main-Methode)
Das Problem ist, das wenn ich auf OK klicke, bleibt das Programm hängen:
Was mache ich falsch (vermutlich beim Ersetzen des alten Panels)?
EDIT: Wenn man die Größe des Fensters (mit der Maus) ändert, dann ist der Button wieder im Normalzustand! (Habe ich unter Windows UND Linux getestet!)
Habe das Problem mal aufgenommen, siehe hier.
Der Code:
GUI_neuesFenster.java
Code:
package testPackage;
import java.awt.*;
import javax.swing.*;
public class GUI_neuesFenster {
private int fensterHoeheStandard = 700;
private int fensterBreiteStandard = 800;
private JFrame fenster;
private JPanel northPanel = new JPanel();
private JPanel centerPanel = new JPanel();
private JLabel ueberschriftLabel = new JLabel();
private GUI_neuesFenster() {
fenster = new JFrame();
fenster.setSize(fensterBreiteStandard, fensterHoeheStandard);
fenster.setLocationRelativeTo(null);
}
public GUI_neuesFenster(String titel, String ueberschrift) {
this();
setTitel(titel);
setUeberschrift(ueberschrift);
}
public void setTitel(String titel) {
fenster.setTitle(titel);
}
public void fensterSichtbar(boolean sichtbar) {
fenster.setVisible(sichtbar);
}
public void setUeberschrift(String ueberschrift) {
northPanel = new JPanel();
ueberschriftLabel = new JLabel(ueberschrift);
Font fontUeberschrift = new Font("Comic Sans MS", Font.BOLD, 30);
ueberschriftLabel.setFont(fontUeberschrift);
northPanel.add(ueberschriftLabel);
fenster.add(BorderLayout.NORTH, northPanel);
}
public void setCenterPanel(JPanel panel) {
fenster.remove(centerPanel);
centerPanel = panel;
fenster.add(BorderLayout.CENTER, centerPanel);
}
public void schliessenBeimSchliessen() {
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
GUI_fenster1.java (die Klasse ruft Methoden in GUI_neuesFenster.java auf, um das Fenster zu erstellen)
Code:
package testPackage;
import java.awt.event.*;
import javax.swing.*;
public class GUI_fenster1 {
GUI_neuesFenster fensterEnglisch = new GUI_neuesFenster("Test",
"Test");
JPanel panelAbfrage;
JTextField textfeldEingabe = new JTextField(20);
public GUI_fenster1() {
naechste();
fensterEnglisch.schliessenBeimSchliessen();
fensterEnglisch.fensterSichtbar(true);
}
private JPanel panelAbfrageErstellen(String deutsch) {
panelAbfrage = new JPanel();
Box box = new Box(BoxLayout.Y_AXIS);
Box box2 = new Box(BoxLayout.X_AXIS);
box2.add(textfeldEingabe);
JButton buttonOK = new JButton("OK");
buttonOK.addActionListener(new buttonOKListener());
box2.add(buttonOK);
box.add(box2);
panelAbfrage.add(box);
return panelAbfrage;
}
private void naechste() {
fensterEnglisch.setCenterPanel(panelAbfrageErstellen("wasweissich"));
}
class buttonOKListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
naechste();
}
}
}
Und zum Schluss noch Main.java (Main-Methode)
Code:
package testPackage;
public class Main {
public static void main(String[] args) {
GUI_fenster1 x = new GUI_fenster1();
}
}
Das Problem ist, das wenn ich auf OK klicke, bleibt das Programm hängen:
Was mache ich falsch (vermutlich beim Ersetzen des alten Panels)?
EDIT: Wenn man die Größe des Fensters (mit der Maus) ändert, dann ist der Button wieder im Normalzustand! (Habe ich unter Windows UND Linux getestet!)
Habe das Problem mal aufgenommen, siehe hier.