Jbutton erzeugt neue Buttons

ms_cikar

Mitglied
Hallo Leute,
Ich habe eine kurze Frage.

Ich habe hier ein Code zum Testzwecken. Ich habe ein Window mit einem Button. Wenn ich den Button Clicke soll ein neuer Button erzeugt werden.
Doch irgend wie klappt es nicht so wie ich mir vorstelle. ich muss immer 100x clicken und irgendwann wird der Button Erzeugt.

Was mache ich Falsch?


Code:
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class main extends JFrame {

    public JPanel contentPane;
    public JButton btnHereIsNew;


    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    main frame = new main();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    public main() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 314, 176);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JButton btnGenButton = new JButton("Create new Button");
        btnGenButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                
                btnHereIsNew = new JButton("Here is new Button");
                btnHereIsNew.setBounds(47, 87, 203, 23);
                contentPane.add(btnHereIsNew);
            }
        });
        btnGenButton.setBounds(47, 21, 203, 23);
        contentPane.add(btnGenButton);
    }

}
 
Das Problem dürfte sein, dass das Fenster nach dem Hinzufügen des Buttons nicht neu gemalt wird. Ich sehe hier mehrere Möglichkeiten:
a) SwingUtilities.updateComponentTreeUI(contentPane); Aufrufen nachdem der Button hinzugefügt wurde. (https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html)
b) Folgender Code könnte es evtl. auch bewirken:
Java:
frame.invalidate();
frame.validate();
frame.repaint();
[/icode]
 

Neue Themen


Zurück
Oben