我正在尝试编写类似于Karnaugh Map的应用程序,我想绘制一个椭圆来包含一组数字。
我所拥有的是JFrame
,其中JPanel
带有GridLayout
,我在其中添加了其他几个面板。所以,最后,我有一个类似网格的界面。我希望椭圆位于这些面板的顶部。
我正在尝试使用Graphics2D
和方法draw()
,但我甚至无法理解如何实例化Graphics2D
对象。
我所做的是:使用Graphics
从JPanel
获取GridLayout
个对象,然后
g是Graphics对象。
Graphics2D g2 = (Graphics2D) g;
g2.draw(new Ellipse2D.Double(x, y,rectwidth,rectheight));
然后repaint()
gridlayout面板,但没有任何反应,它不会抛出异常或任何东西。
我做错了什么?
答案 0 :(得分:4)
在Performing Custom Painting中检查基本思想。该方法是覆盖合适paintComponent()
的{{1}}方法,并在询问时呈现相对于其当前大小的内容。这个example得出数字;这个example说明了适合这种map的重叠半透明形状。
或者,添加合适的组分,例如JComponent
或JLabel
,JButton
,如here所示。在GridLayout
包裹的LayerUI
中渲染所需的形状,如How to Decorate Components with the JLayer
Class所示,以及here引用的示例MadProgrammer:here, here和here。