如何在Panel上绘制椭圆?

时间:2016-05-19 06:57:47

标签: java swing

我正在尝试编写类似于Karnaugh Map的应用程序,我想绘制一个椭圆来包含一组数字。

我所拥有的是JFrame,其中JPanel带有GridLayout,我在其中添加了其他几个面板。所以,最后,我有一个类似网格的界面。我希望椭圆位于这些面板的顶部。

我正在尝试使用Graphics2D和方法draw(),但我甚至无法理解如何实例化Graphics2D对象。

我所做的是:使用GraphicsJPanel获取GridLayout个对象,然后

g是Graphics对象。

Graphics2D g2 = (Graphics2D) g;

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

然后repaint() gridlayout面板,但没有任何反应,它不会抛出异常或任何东西。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

Performing Custom Painting中检查基本思想。该方法是覆盖合适paintComponent()的{​​{1}}方法,并在询问时呈现相对于其当前大小的内容。这个example得出数字;这个example说明了适合这种map的重叠半透明形状。

或者,添加合适的组分,例如JComponentJLabelJButton,如here所示。在GridLayout包裹的LayerUI中渲染所需的形状,如How to Decorate Components with the JLayer Class所示,以及here引用的示例MadProgrammerhereherehere