Ich möchte eine Gui programmieren welche zuerst lediglich zwei Buttons beinhaltet. Abhängig davon welchen Button der Benutzer drückt sollen die entsprechenden weiteren Gui Elemente dem Hauptfenster "frame" hinzugefügt werden.
Problem: Wird button1 gedrückt sollte ein neuer Button auf der Gui erscheinen. Der Code im zugehörigen ActionEvent wird aber scheinbar nur bis zur Konsolenausgabe ausgeführt.
Drücke ich zuerst button1 und anschließend button2 so erscheint der neue Button doch noch auf dem Hauptfenster.
Kann mir jemand diesen Zusammenhang erklären ?
Wie muss ich den Code ändern damit der neue Button (bzw. das Panel auf dem er angebracht) ist direkt beim ActionEvent von button1 sichtbar wird?
Problem: Wird button1 gedrückt sollte ein neuer Button auf der Gui erscheinen. Der Code im zugehörigen ActionEvent wird aber scheinbar nur bis zur Konsolenausgabe ausgeführt.
Drücke ich zuerst button1 und anschließend button2 so erscheint der neue Button doch noch auf dem Hauptfenster.
Kann mir jemand diesen Zusammenhang erklären ?
Wie muss ich den Code ändern damit der neue Button (bzw. das Panel auf dem er angebracht) ist direkt beim ActionEvent von button1 sichtbar wird?
Code:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Stack implements ActionListener{
public static JFrame frame = new JFrame();
JButton button1;
JButton button2;
JPanel buttonPanel;
public Stack() {
frame.setTitle("The Planner");
frame.setSize(400, 400);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
button1 = new JButton("Work");
button1.setBounds(20, 20, 150, 35);
button1.addActionListener(this);
button2 = new JButton("Holiday");
button2.setBounds(200, 20, 150, 35);
button2.addActionListener(this);
buttonPanel = new JPanel();
buttonPanel.setLayout(null);
buttonPanel.setBounds(0, 0, 400, 100);
buttonPanel.add(button1);
buttonPanel.add(button2);
frame.add(buttonPanel);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button1) {
System.out.println("Button1 is pressed");
JPanel overlayPanel = new JPanel();
overlayPanel.setLayout(new GridLayout());
JButton zuss = new JButton("Open Outlook");
overlayPanel.add(zuss);
overlayPanel.setBounds(0, 200, 380, 30);
frame.add(overlayPanel);
//frame.setVisible(true);
} else if(e.getSource() == button2) {
System.out.println("Button2 is pressed");
Stack program2 = new Stack();
}
}
public static void main(String[] args) {
Stack startProgram = new Stack();
}
}