【发布时间】:2016-09-15 21:45:16
【问题描述】:
我正在尝试编写一个类似于Karnaugh Map 的应用程序,并且我想绘制一个椭圆来包围一组数字。
我有一个JFrame,它有一个JPanel 和一个GridLayout,我在其中添加了几个其他面板。所以,最后,我有一个类似网格的界面。我希望椭圆位于这些面板的顶部。
我正在尝试使用Graphics2D 和draw() 方法,但我什至无法理解如何实例化Graphics2D 对象。
我所做的是:用GridLayout从JPanel获取Graphics对象,然后
g 是图形对象。
Graphics2D g2 = (Graphics2D) g;
g2.draw(new Ellipse2D.Double(x, y,rectwidth,rectheight));
然后repaint() gridlayout 面板,但什么也没发生,也没有抛出异常或任何东西。
我做错了什么?
【问题讨论】:
-
您不应该实例化
Graphics2D,您应该从JPanel覆盖paintComponent(Graphics),并在那里进行绘图。见这里:stackoverflow.com/questions/2509561/… -
哦,谢谢,但是java如何管理
paintComponent(Graphics)?我的意思是,我可以随时调用它吗? -
每次重新绘制组件时都会自动调用此方法。当您确实需要手动触发重绘时,您可以调用 repaint(),但我认为您不必这样做。
-
我明白了,我会努力做到的。谢谢!