![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
前回、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で質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- 英語 下記の英文を日本語に訳してください。 1 2023/03/10 13:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVAを使った『健康チェック』
-
setPrefferedSizeとsetSize
-
ListSelectionListenerのvalueC...
-
awtでGUIを作成しているのです...
-
JScrollPaneの細かい設定について
-
JButton-背景の透明化
-
Javaのレイアウトマネージャに...
-
JavaでのSwingを使った簡易電卓...
-
キャレットの幅を設定したい。
-
return;
-
Enterキーでボタンを押すにはど...
-
JPanelの切り替えと再描画
-
スクロールバーの初期化(Java)
-
’じゃんけん’をするプログラム...
-
ArrayListの使い方について(初...
-
javaGUIインスタント変数とロー...
-
javaで文字数制限するには?
-
KeyListenerの使い方について
-
javaで2パネルにテーブルデー...
-
java junit list同士の比較方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
javaで文字数制限するには?
-
JPanelの切り替えと再描画
-
連番をオブジェクト名の最後に...
-
JPanelの重ね方/OverlayLayout他
-
JavaのswingでCardLayoutの画面...
-
JavaでのSwingを使った簡易電卓...
-
ArrayListの使い方について(初...
-
4択クイズでのランダム出題の...
-
KeyListenerの使い方について
-
JDialogを閉じた時の処理
-
BMI測定を作ろうとしている...
-
TextAreaでの文字の色
-
EXECLの行を削除
-
Java-Swing TextAreaにスクロー...
-
setPrefferedSizeとsetSize
-
【Swing】JPanel クラス外から...
-
最後の行に移動するには?
-
あるコンボボックスを選択する...
-
JButton-背景の透明化
おすすめ情報