2010-11-29 15 views
1

問題は私にとって奇妙なものです。ステップバイステップで、正しく(私の意見では)最終的に私が自分のプログラムの一部を完成したと言えるでしょう私の。実際の問題は、私が作成したGUIでJPanelを使用した後、JFrameに最後に入れたJTabbedPaneにそれを入れたことです。すべてはうまくありません。私はそれが奇妙に聞こえるのは分かっていますが、プログラムを実行した後、私は望むものを得ました。(フレームにはいくつかのものが入ったパネルがあるタブ付きの枠があります)、再度実行すると、最悪のことは、それはランダムです、私は何が間違っているかもしれないかという手がかりを持っていない、私はそれを見つけるために私は正確に何をgoogleする必要があるか分からない。コードは次のとおりです。JTabbedPane自体がランダムに表示されます

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); 
    } 

    } 

そして、私はちょうど、他のクラスのmainメソッドでそれを実行します。

public class GUIStarter { 

public static void main(String[] args) { 

    GUI start = new GUI(); 

} 

} 

だから、誰かが私に答えたり、単にヒントを与えることができますか? ありがとうございます。

答えて

2

の後にframe.setVisible(true)に電話して、すべてのコンポーネントをJFrameに追加する必要があります。コンストラクタの最後に移動してみてください。

または、すべてのコンポーネントが追加された後にframe.validate()に電話をかけることができます。

+0

ありがとうございます!今働いて! – Lucas

関連する問題