- PR -

swingのコンポーネントが表示されない

1
投稿者投稿内容
ひで
常連さん
会議室デビュー日: 2005/04/27
投稿数: 41
お住まい・勤務地: 神戸
投稿日時: 2006-08-23 10:01
こんにちわ。
今勉強がてら、swingの簡単なプログラムを書いているのですが、
テキストボックスが表示されません。コードは下のような感じです。

public class AccumeratorGUI extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;
private static Component text1 = new JTextField(15);
private static Component text2 = new JTextField(15);
private static Component text3 = new JTextField(15);
private static Component executeButton = new JButton("実行");
private static Component closeButton = new JButton("閉じる");
private static JPanel p1 = new JPanel();
private static JPanel p2 = new JPanel();

public AccumeratorGUI(){

super("計算プログラム");

text1.setVisible(true);
text2.setVisible(true);
text3.setVisible(true);

p1.add(text1);
p1.add(text2);
p1.add(text3);
p2.add(executeButton);
p2.add(closeButton);
p2.setBounds(0, 100, 500, 100);

text1.setSize(150,40);
text2.setSize(150,40);
text3.setSize(150,40);

executeButton.setVisible(true);
executeButton.setSize(200, 100);
closeButton.setVisible(true);

super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setLocationRelativeTo(null);
}

public static void main(String[] args){

AccumeratorGUI ui = new AccumeratorGUI();

ui.setSize(500, 200);
ui.setResizable(false);
ui.getContentPane().add(p1);
ui.getContentPane().add(p2);
}
}

上記のフレームは起動しますが、textやbuttonが表示されない状態です。
どこがどう悪いのかわかりません。
お分かりになる方いらっしゃいましたらご教示お願いいたします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-08-23 10:08
表示してからテキストエリアを持つパネルやボタンを持つパネル等を追加しても反映されませんよ。追加や色々の処理をしてから最後に表示しましょう。
あとレイアウトについても勉強した方がいいと思います。

BorderLayout、FlowLayout等々
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-08-23 10:33
mainメソッドの最後に
コード:
ui.validate();


を足してみてください。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Container.html#validate()

このあたりのルールは経験を重ねないとわからないところですね…。
想馬のおっしゃるようにレイアウトを完了してから
setVisible(true);
というのが無難です。
途中変更がどうしてもしたい場合はvalidateを忘れずに。
ひで
常連さん
会議室デビュー日: 2005/04/27
投稿数: 41
お住まい・勤務地: 神戸
投稿日時: 2006-08-23 10:49
validateというのはこういう時に使用するんですね。
以前に使用したことのあるコードを見た事があるのですが、
javadocの内容を見てもいまいちどういう機能かわかりませんでした。
勉強になりました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)