2010-11-29 32 views
1

le problème que j'ai rencontré est bizarre pour moi, parce que je faisais tout étape par étape, correctement (à mon avis) et enfin quand je pouvais dire que je terminais une partie de mon programme il semblait s'amuser de moi. Le vrai problème est que dans GUI j'ai créé j'ai utilisé un JPanel, puis je l'ai mis dans un JTabbedPane que j'ai finalement mis dans un JFrame. Tout va bien et fonctionne indépendamment des périodes où ce n'est pas le cas. Je sais que cela semble étrange, mais après avoir exécuté le programme une fois que j'ai obtenu ce que je voulais (Cadre avec panneau à onglets contenant le panneau avec quelques trucs dedans) et puis quand je l'exécute à nouveau montrer la bonne chose ou juste le cadre vide. La pire chose est que c'est si aléatoire, je n'ai pas la moindre idée de ce qui ne va pas, je ne sais même pas exactement ce que je devrais google pour le découvrir. Le code est:JTabbedPane se montre aléatoirement

import java.awt.Dimension; 
import java.awt.Toolkit; 
import javax.swing.*; 

public class GUI extends JFrame { 

JFrame frame = new JFrame("WakeOnLan script generator"); 
JPanel panel1 = new JPanel(null); 
JTextArea text; //= new JTextArea("test"); 
JScrollPane scroll = new JScrollPane(); 
JButton but = new JButton("test"); 
JTabbedPane tab = new JTabbedPane(); 

public GUI() { 

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
    int w = frame.getSize().width; 
    int h = frame.getSize().height; 
    int x = (dim.width-w)/3; 
    int y = (dim.height-h)/4; 

    frame.setSize(500,500); 
    frame.setLocation(x,y); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.setLayout(null); 

    createTab1(); 

    tab.addTab("Tab 1", panel1); 
    tab.setVisible(true); 
    tab.setBounds(0, 0, 500, 500); 

    frame.add(tab); 

} 

public void createTab1(){ 

    text = new JTextArea("test"); 
    text.setVisible(true); 

    scroll.setViewportView(text); 
    scroll.setBounds(10,10,465,300); 

    panel1.setLayout(null); 
    panel1.add(scroll); 
    panel1.setVisible(true); 
    panel1.setSize(500,500); 
    //panel.setBackground(Color.blue); 
    } 

    } 

Et puis je lance simplement dans la principale méthode dans d'autres classes:

public class GUIStarter { 

public static void main(String[] args) { 

    GUI start = new GUI(); 

} 

} 

Alors quelqu'un pourrait-il me donner une réponse ou un soupçon? Merci.

Répondre

2

Vous devez appeler frame.setVisible(true)après en ajoutant tous vos composants à votre JFrame. Essayez donc de le déplacer jusqu'à la fin de votre constructeur.

Vous pouvez également appeler frame.validate() après que tous les composants ont été ajoutés.

+0

Merci beaucoup! Travaille maintenant! – Lucas