
JFrameについて質問があるのですが
import javax.swing.*;
public class JFrameTest extends JFrame{
public static void main(String[] args){
JFrameTest frame = new JFrameTest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 300, 200);
frame.setTitle("タイトル");
frame.setVisible(true);
}
JFrameTest(){
JPanel p = new JPanel();
Container contentPane = getContentPane();
ContentPane.add(p);
pack();
}
}
このプログラムと
import javax.swing.*;
public class JFrameTest{
public static void main(String[] args){
JFrame frame = new JFrame("フレームのタイトル");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds( 10, 10, 300, 200);
frame.setVisible(true);
JPanel p = new JPanel();
Container contentPane = frame.getContentPane();
frame.ContentPane.add(p);
frame.pack();
}
}
このプログラムは何が違うのでしょう?
やってることはまったく一緒だと思ってたのですが、全然違うみたいです。
上のプログラムの
JFrameTest(){
はコンストラクタと呼ばれるものなのでしょうか?
しょぼい質問で申し訳ないのですが誰か教えていただけないでしょうか。
No.1ベストアンサー
- 回答日時:
私の認識程度で解説させていただきます。
上のプログラムと下のプログラムは、単純に考えると同じ動作を行うプログラムですが、
> JPanel p = new JPanel();
以下4行が
> JFrameTest(){
という、コンストラクタの中にあるかどうかということで、最終的な動作は違ってきます。
ちなみに
> JFrameTest(){
はコンストラクタで正しいです。
コンストラクタがあるということは、
> JPanel p = new JPanel();
以下4行の処理が実行されるとき、必ず初期化されて実行されます。( 以下URL参照 )
-> http://www.javadrive.jp/start/constructor/index1 …
また、フレーム上に初期化されたJPanelクラスのオブジェクト( コンポーネント )を追加するようになっています。
-> http://www.javadrive.jp/tutorial/jframe/index8.h …
まとめますと、
・上はコンストラクタ内の処理が実行されるとき、必ず初期化する。
・下は初期化を行わない。
だと私は認識しています。
ちなみに私は上のコンストラクタを使った方法で簡単なランチャーを作ったりしています。
No.2
- 回答日時:
JFrameTest はコンストラクタになります。
上のプログラムと下のプログラムは、基本的動作は同じです。
ただ相違点は、
(1) 上のプログラム(javax.swing.JFrameクラス継承)
パネル編集(JFrameTestオブジェクト生成)後フレーム表示設定
パネル編集はJFrameTestコンストラクタ内で行う。
(2) 下のプログラム
JFrameクラスインスタンス生成後、パネル編集とフレーム表示設定
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TextAreaでの文字の色
-
java junit list同士の比較方法
-
Enterキーでボタンを押すにはど...
-
エラーで式の開始が不正ですと...
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JavaScriptの変数をjavaのメソ...
-
ORA-01858: 数値を指定する箇所...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
-
JScrollPaneで、表示がおかしく...
-
JavaScriptを使ってロト6の当...
-
streamで送信されたArrayListを...
-
JavaScriptとVBScriptに関して
-
IF関数でEmpty値を設定する方法。
-
動的配列が存在(要素が有る)か...
-
ループ処理の際、最後だけ","を...
-
オブジェクトの中のプロパティ...
-
1~100までの数字を表示したい
-
matchesを否定文として使う方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Buttonを押すと画像が表示され...
-
setPrefferedSizeとsetSize
-
javaで文字数制限するには?
-
JPanelの切り替えと再描画
-
java junit list同士の比較方法
-
SwingのJMenuに大量のJMenuItem...
-
JDialogを閉じた時の処理
-
JFrameとJPanelの最大化について
-
KeyListenerの使い方について
-
最後の行に移動するには?
-
JTable の 列幅を個別に設定す...
-
TextAreaでの文字の色
-
cadで作った図面をフレーム上で...
-
JTableの列ヘッダ
-
4択クイズでのランダム出題の...
-
JPanelの重ね方/OverlayLayout他
-
Enterキーでボタンを押すにはど...
-
Swing自作コンポーネントをadd...
-
Java-Swing TextAreaにスクロー...
-
キーボードから入力された全角...
おすすめ情報