前回、http://oshiete.goo.ne.jp/qa/8069621.htmlで質問しました。
回答をもとにframe.setvisible(true)をコンストラクタの最後にするとうまくいき回答を締め切ったんですが・・・。
しかし、mainメソッドにframe.setvisible(true)を書くとフレームのタイトル部分だけとなり、
サイズがセットされないまま実行したときと同じようになってしまいます。
なぜでしょう?よろしくお願いします。
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Table0{
public static void main(String[] args) {
Frame0 test=new Frame0();
test.setVisible(true);
}
}
class Frame0 extends JFrame{
JFrame frame;
JPanel panel;
JScrollPane jsp;
JTable table;
DefaultTableModel dtm;
public Frame0(){
frame=new JFrame("table");
frame.setBounds(30, 30, 300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table=new JTable(8,5);
jsp=new JScrollPane(table);
jsp.setPreferredSize(new Dimension(250, 70));
panel=new JPanel();
panel.add(jsp);
Container c=frame.getContentPane();
c.add(panel,BorderLayout.CENTER);
}
}
No.1ベストアンサー
- 回答日時:
改造がんばってますね(^^
ご質問のプログラムでは、mein()で生成したフレームとは別のフレームを生成して
そちらにGUIを配置しているため、本来のフレームが初期化されずにいます。
今回はFrame0自体がJFrameを継承して作っているので自分自身がフレームになります。
ですので、Frame0のコンストラクタの中では自分(this)に対して初期化をします。
なのでコンストラクタの中で新しくJFrameをnewする必要はありません。
setBounds()やsetDefaultCloseOperation()は自分自身に行います。
例)
this.setBounds(30, 30, 300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
※「this.」は省略可能です。
よって、コンポーネントも自分に追加することになります。
Container c=this.getContentPane();
c.add(panel,BorderLayout.CENTER);
さらに蛇足ですが、JaveSE5あたりからgetContentPane()しなくても
フレームに直接add()メソッドで配置できるようになっています。
ですのでthis.add(panel,BorderLayout.CENTER);でも追加が可能です。
(本来はContentPaneという部分を扱っているというのは重要な知識なんですけどね)
No.3
- 回答日時:
追伸
public class Table0{
public static void main(String[]args){
Frame0 f=new Frame0();
f.frame.setVisible(true);
}
}
を実行すると setBounds()は反映されません
public class Table0{
public static void main(String[]args){
Frame0 f=new Frame0();
f.frame.setBounds(30,30,300,200);
f.frame.setVisible(true);
}
}
ってすると一応できます。
あと
Container c=frame.getContentPane();
c.add(panel,BorderLayout.CENTER);
を
frame.getContentPane().add(panel,BorderLayout.CENTER);
に短縮できます
No.2
- 回答日時:
よくわかりませんが
これでできますよ。
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Table0{
public static void main(String[]args){
Frame0 f=new Frame0();
f.frame.setVisible(true);
}
}
class Frame0 extends JFrame{
JFrame frame;
JPanel panel;
JScrollPane jsp;
JTable table;
DefaultTableModel dtm;
public Frame0(){
frame=new JFrame("table");
setBounds(30,30,300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
table=new JTable(8,5);
jsp=new JScrollPane(table);
setPreferredSize(new Dimension(250,70));
panel=new JPanel();
panel.add(jsp);
Container c=frame.getContentPane();
c.add(panel,BorderLayout.CENTER);
}
}
単にオブジェクトを生成した変数を参照すればいいだけだと、おもいます
いかがですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArrayListの使い方について(初...
-
java junit list同士の比較方法
-
4択クイズでのランダム出題の...
-
【Swing】JPanel クラス外から...
-
次のように書いたのですが、ウ...
-
タスクトレイのメニュからウィ...
-
Java配列でNullPointerExceptio...
-
Path型をString型へ変換する(Java)
-
JSPやサーブレットでSystem.out...
-
オブジェクトの中のプロパティ...
-
csvファイルを2次元配列に格納
-
ダブルクォーテーションのrepla...
-
System.err. printlnとSystem.o...
-
[JAVA]try 内の変数を外で!?
-
VBAで配列の計算
-
Visual Basic でのコードをASCI...
-
JAVA 文字色変更
-
C++からC#のdllを参照する際、...
-
ArrayListによる計算表作成
-
この警告はどうすれば?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
JButton-背景の透明化
-
ボタンクリック後パネルを再描...
-
EXECLの行を削除
-
Enterキーでボタンを押すにはど...
-
VB6.0でのTextboxの高さ変更
-
JTableの列ヘッダ
-
JPanelの重ね方/OverlayLayout他
-
JDialogを閉じた時の処理
-
javaで文字数制限するには?
-
JTable の 列幅を個別に設定す...
-
KeyListenerの使い方について
-
最後の行に移動するには?
-
スクロールバーの初期化(Java)
-
4択クイズでのランダム出題の...
-
JFrameとJPanelの最大化について
-
JavaのswingでCardLayoutの画面...
-
【Swing】JPanel クラス外から...
-
AWTのアプレットにおいてのイベ...
おすすめ情報