java - JPanel内でのグラフィックの実装

java swing graphics netbeans

私は、Netbeansで作成したGUIアプリケーションにグラフィックスを実装しようとしています。 GUIエディターを使用してレイアウト(ボタン、テキストボックスなど)を作成しましたが、これまでのところすべて正常に機能しています。基本的に私がやりたいことは、JFrameの下半分にグラフィック(ラインなど)を生成し、チェックボックスやボタンなどをJFrameの上半分に残します。

私が見た例から、一般的なアプローチは、JPanelを拡張し、線やその他のさまざまな形状を作成するためのグラフィックスコードを含むクラスを作成することです。 GUIエディターとは別にこれを実装することができましたが、アプリケーションはJFrame全体を占めるJPanelのみで構成されています。 GUIエディターでこれを行うために使用したさまざまなアプローチは、グラフィックスを生成しましたが、JFrame内の他のすべてをブロックしました(たとえ小さな行でも)、または何もしませんでした。

理想的には、任意のサイズのJPanelをJFrameの任意の場所に配置し、パネル内に含まれるグラフィックスを作成できるようにしたいと考えています。また、作成するグラフィックの座標をJFrameではなくJPanelに参照させたいと考えています(座標0,0は、どこに配置するかに関係なく、JPanelの左上にあります)。

これを行う簡単な方法はありますか?

(サンプルコードは大歓迎です)
答え
まず、JPanelを拡張するクラスを提供し、次にpaintComponentメソッドをオーバーライドして、グラフィックのカスタムペインティングを提供する必要があります。

次に、JFrameで適切なレイアウトマネージャを使用して、JFrameに複数のコンポーネントを配置する必要があります。たとえば、GridLayoutを使用してJframeを2つの等しい半分に分割できます。上にあるものには、ボタンとコントロールを備えた通常のJPanelを含めることができ、下にあるものは、カスタムグラフィックスを備えたカスタムJPanelになります。

paintComponentで使用する座標は、下部のJPanelのみを参照します。

もちろん、より具体的なレイアウトオプションが必要な場合は、GridLayoutよりも高度なレイアウトマネージャを使用できます。


これは、コンポーネントを右クリックし、自動サイズ変更オプションで「垂直」または「水平」を選択することにより、netbeans ideでも実行できます。
関連記事

java - 正規プレイフレームワークWebアプリのベストプラクティスのプロファイリング

java - Javaロボットがマウスクリックを確認する

java - ニューラルネットワークのバックプロパゲーション:バイアスは無限大に向かいます

java - @GeneratedValue(strategy = GenerationType.AUTO)はランダムではありません

java - Linux OSでのシリアルポート通信

java - ダイアログへのonContextItemSelected

c# - JavaリストXMLをC#にインポートする方法

java - 文字列の重複を見つけるための私のプログラムの効率に関する入力が必要

java - maven:同じ2つのアーティファクトを追加しますが、バージョンが異なります

java - Java Scripting Engineクラスのインスタンス化