1

私が遭遇した問題は私にとって奇妙です。なぜなら、私はすべてを段階的に正しく (私の意見では) 行っていたからです。実際の問題は、作成した GUI で JPanel を使用し、それを JTabbedPane に入れ、最終的に JFrame に入れたことです。すべてが正常で、機能しない場合を除いて機能します。私はそれが奇妙に聞こえることを知っていますが、プログラムを実行した後、私が望むものを取得した後 (いくつかのものが含まれるパネルを含むタブ付きペインを持つフレーム)、再度実行すると、正しいものが再び表示されるか、単に空のフレームが表示されます。最悪なのは、それが非常にランダムであることです。何が間違っているのか手がかりがありません。それを見つけるために正確に何をグーグルで検索すればよいかさえわかりません. コードは次のとおりです。

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

   }

そして、他のクラスのメイン メソッドで実行します。

public class GUIStarter {

public static void main(String[] args) {

    GUI start = new GUI();

}

}

では、誰かが私に答えやヒントを教えてもらえますか? ありがとうございました。

4

1 に答える 1

2

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

frame.validate()または、すべてのコンポーネントが追加された後に呼び出すこともできます。

于 2010-11-29T13:24:16.280 に答える