JTabbedPane

Floffy

Mitglied
Hallo Leute,

Ich hab folgendes Problem:
Ich habe einen JFrame, den ich ein TabbedPane hinzufügen möchte.
Das komische daran ist aber nur, dass es nur manchmal funktioniert. Das heißt bei jedem 4. mal starten in etwa ist das TabbedPane zu sehen, sonst nicht.
Falls es nicht zu sehen und ich das Fenster maximiere, erscheint es aber auch.

Hier meine Frameklasse:
Code:
public class frame extends JFrame {

    public frame() {
        this.setTitle("Eintrag hinzufügen");
        this.setSize(500, 600);
        this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
        this.setVisible(true);
        
        this.setLayout(new GridLayout(1,1));
        this.add(new tabbedPane());
    }
}

und hier das TabbedPane:
Code:
public class tabbedPane extends JTabbedPane{

    public tabbedPane() {
        
        this.addTab( "Farm", new JTextArea() );
        this.addTab( "Server", new JTextArea() );

        JTabbedPane appPane = new JTabbedPane();
        appPane.addTab("Bestehende Applikation", new JTextArea());
        appPane.addTab("Neue Applikation", new JTextArea());

        this.addTab("Applikation", appPane);
        this.setVisible(true);
    }
}


Ich frag mich echt an was das liegen könnte, falls ihr ne Idee habt, bitte meldet euch!
Danke im Voraus!

Grüße Flo
 
muss es unbedingt ein Gridbacklayout sein? (Habe damit keine erfahrung, aber ich würde es mit einem BorderLayout machen.)

So in etwa:

Java:
this.setLayout(new BorderLayout());
this.add(new tabbedPane(), BorderLayout.CENTER);
 
Ist ja auch ein Grid ohne Bag Layout. Also noch viel hässlicher ;)

Ja, Borderlayout ist meist das beste für Standardgeschichten

P.S. mein Liebling ist Border mit nem Flow im North und South und nem einspaltigen Grid in East und West
 
Das Layout passt schon so wies is, ein Gridlayout mit 1,1 bedeutet ja dass es nur eine Zelle gibt, das war genau das was ich wollte. Ich hab auch andere Varianten versucht, war trotzdem keine Veränderung zu sehen.

Das Problem ist bereits gelöst, zwar ein bischen umständlich, aber anderes gings nicht.
Ich hab mittels resize() die Framegröße verändert bevor ich es auf visible setzte und dann wurde es tatsächlich angezeigt .. Warum auch immer :confused:

Grüße Flo
 
Hallo,

mal ein kleiner Nachtrag !

Wenn man einem bereits sichtbaren Fenster noch Komponenten hinzufügt,
ohne das Layout zu validieren, darf man sich über eine fehlerhafte Darstellung
nicht wundern.

Also :

Erst Fenster komplett aufbauen, dann ein pack() darauf ausführen und dann
erst setVisible(true). So klappt es in der Regel immer !

Gruß jadix
 
Stimmt war mir gar nicht aufgefallen das set vsible gehört meist nach hinten.

es sei denn man weiß was man tut

pack() natürlich nur wenn einem die genaue Größe nicht so wichtig ist
 
Zurück