2016-05-19 18 views
2

私はKarnaugh Mapのようなアプリケーションをコーディングしようとしています。数字のグループを囲む楕円を描きたいと思います。パネルの上に楕円を描く方法は?

は、JPanelGridLayoutがあり、ここにいくつかのパネルを追加しています。だから、結局、私はグリッドのようなインターフェースを持っています。私は楕円をこれらのパネルの上に置いて欲しい。

私はGraphics2Dと方法draw()を使用しようとしていますが、Graphics2Dオブジェクトをどのようにインスタンス化するかを理解することさえできません。

私がやったことです:その後、

グラムは、Graphicsオブジェクトである、GridLayoutJPanelからGraphicsオブジェクトを取得します。その後

Graphics2D g2 = (Graphics2D) g; 

g2.draw(new Ellipse2D.Double(x, y,rectwidth,rectheight)); 

repaint()のGridLayoutパネルが、何も起こりませんし、それは例外または何かを投げるdoesntの。

私は間違っていますか?

+1

'Graphics2D'をインスタンス化するべきではありません。' JPanel'から 'paintComponent(Graphics)'をオーバーライドし、そこに描画を行うべきです。参照してください:http://stackoverflow.com/questions/2509561/how-to-draw-a-filled-circle-in-java – Berger

+0

ああ、ありがとう、しかし、どのようにjavaは 'paintComponent(グラフィックス)'を管理するのですか?私がしたいときに私はちょうどそれを呼び出すことができますか? –

+0

このメソッドは、コンポーネントが再描画されるたびに自動的に呼び出されます。手動で再ペイントをトリガする必要があると実際に感じるときにはrepaint()を呼び出すことができますが、そうする必要はないと思います。 – Berger

答えて

4

Performing Custom Paintingで基本的な考え方を調べます。この方法はのメソッドを適切なJComponentに上書きし、尋ねられたときにコンテンツを現在のサイズに合わせてレンダリングすることです。このexampleは数字を描画します。このexampleは、そのようなmapに適した重なり合う半透明の形状を示す。あるいは、適切な成分、例えば、成分を添加する。 JLabelまたはJButtonからGridLayoutへ、hereとして示されている。 hereherehereHow to Decorate Components with theJLayerClassに示す例は、MadProgrammerによってhereを引用し、JLayerに包まLayerUIに所望の形状をレンダリングします。

+0

あなたの「ここに引用された例」リンクは、MadProgrammerの回答ではなく、あなたの回答を示しています。 –

+1

@BileshGanguly:参考にしていただきありがとうございます。コメントリンクは正しいものの、私は例を含めるように答えを編集しました[引用](http://stackoverflow.com/questions/37315982/how-to-draw-an-ellipse-on-top-of-panel/37319505?noredirect = 1#comment62157701_37315982)。 – trashgod

+0

ありがとうございました。私はGraphicsオブジェクトをうまく使いませんでした。 –

関連する問題