新しい小さなアプリケーションの開発を始めようとしています。約10種類のGUIが含まれます。
Netbeansを使用して、JFrameまたはJPanelのいずれかを作成できますが、どちらを使用する必要がありますか?
残りのGUIへのボタンを含むメニューGUIがあります。また、いくつかのコントローラーをパラメーターとして渡す必要があります
JPanelとJFrameの違いについて少し混乱していると思います。JPanelは、ボタン、テキストフィールド、その他のJPanelなどの他のGUIコンポーネントを保持するためのコンテナとして機能します。
一方、JFrameはトップレベルのコンポーネント(メインのJPanel)と見なすことができます。
JFrame
フレームは、タイトルと境界線のあるトップレベルのウィンドウです。
以下は、典型的なJFrameの画像です。
JPanel
この
JPanel
クラスは、軽量コンポーネント用の汎用コンテナを提供します。
以下はJPanelsの画像です。各色は異なるJPanelを表します
:
したがって、質問に答えるには、両方を使用する必要があります。JFrame(メインコンテナとして機能)から始め、JPanelsを追加してグラフィカルユーザーインターフェイスを構築します。
これらの2つのリンクを読んで、より良いアイデアを得て、コードを確認することをお勧めします。
10種類のGUI
JPanel
ベースのGUI要素を表示するためのさまざまなオプションがあります。
CardLayout
JTabbedPane
複数のJFrameの使用、良い/悪い習慣を参照してください。ウィジェットのさまざまなグループを組み合わせたり表示したりすることに関する他の多くのアイデアについて。
NBは、またはのいずれJFrame
かを拡張することに抵抗JPanel
します。代わりに、単に1つへの参照を保持し、必要に応じてそれを使用します。
JFrameはトップレベルのコンポーネントです。これは、アプリケーションの「スキン」です。JPanelsはトップレベルのコンテナではありません。それらは、他のトップレベルのコンテナ内に存在する必要があります。JPanelsは、JFrameのコンテンツペインに追加できます。
少しのサンプルコードであなたの質問に答えます。
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.GridLayout;
public class Example extends JFrame implements Runnable
{
JPanel left;
JPanel right;
public Example()
{
super("Two JPanels in here");
left = new JPanel(){
public void paintComponent(Graphics g)
{
g.setColor(Color.red);
g.fillRect(0,0,getWidth(), getHeight());
}
};
right = new JPanel(){
public void paintComponent(Graphics g)
{
g.setColor(Color.blue);
g.fillRect(0,0,getWidth(), getHeight());
}
};
}
public void run()
{
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setLayout(new GridLayout(1,2));
getContentPane().add(left);
getContentPane().add(right);
setVisible(true);
}
public static void main(String[] args)
{
Example e = new Example();
javax.swing.SwingUtilities.invokeLater(e);
}
}
パネルがコンテンツペイン内にどのように表示されるかに注目してください。
この記事は有益なようです:
概要:
JPanelは汎用コンテナとして機能しますが、JFrameは、警告ウィンドウや通知ウィンドウなどのスタンドアロンアプリケーションで一般的に使用されるウィンドウです。
JPanelは、より複雑な操作やアプリケーションに使用される領域を表します。
JPanelでは、1つのパネルで多くの操作を実行できますが、JFrameでは、異なる目的のために内部フレームを使用できます。
JFrameがトップレベルウィンドウのJPanelよりも柔軟であるかのように読み取られます。@ncmathsadistが指摘しているように、JPanelはJFrameに埋め込まれている場合もあります。
これらの回答のいくつかは、WAAAAAYが詳細すぎます。
JPanelを使用するだけです。
パネルはいつでもフレームに入れることができます。パネルにフレームを入れることはできません。