JFrame aktualisieren

  • Themenstarter Themenstarter Christian76
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

Christian76

Gast
Hallo,

ich habe ein kleines Problem mit JFrames oder JPanels.

Ich will dynamisch zur Laufzeit JButtons zu einem JPanel durch JButtonklick hinzufügen. Das klappt soweit auch
schon ganz gut. Die Buttons werden erstellt. Aber sie werden erst angezeigt wenn ich das JFrame neu skaliere.

Könnt ihr mir die Methode nennen die ich hinzufügen muss damit es auch ohne das funktioniert?

Gruß
-Christian

Hier mein SC:
Code:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GridLayout; 
import java.awt.Color;
import javax.swing.JScrollPane;


public class Main extends JFrame
{
    JPanel panFenster;
    JPanel panButton;
    
    public Main()
    {
        this.setTitle("dynamsiches Buttonfenster");
        this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        this.setLayout( new GridLayout(2,1) ); 
        // JFrame mit 2 Panels
        panFenster = new JPanel();
        panButton = new JPanel();
        // das obere wo die Buttons reinkommen bekommt ein Flowlayout damit die Buttons sich nebeneinander anordnen.
        panFenster.setLayout(new FlowLayout());
        panFenster.setBackground(Color.blue);
        
        // unten kommt ein Button rein, um neue Buttons zu erstellen
        JButton Knopf = new JButton( "neues Fenster" ); 
        
        // Oberes Panel an ActionListener Klasse übergeben.
        Fenster objFenster = new Fenster(panFenster);
        Knopf.addActionListener(objFenster);
        
        panButton.add(Knopf);
 
        this.add(panFenster);
        this.add(panButton);
        
        this.setVisible(true);
        this.pack();
        
    }

    public static void main(String[] args)
    {
        new Main();
    }
}

class Fenster implements ActionListener
{
    JPanel panFenster;
    
    Fenster(JPanel Fenster)
    {
        panFenster=Fenster;
    }
    
    public void actionPerformed(ActionEvent e) 
    {
        panFenster.add(new JButton("Neues Fenster"));
    }
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben