Java 如何在面板顶部绘制椭圆?

Java 如何在面板顶部绘制椭圆?,java,swing,Java,Swing,我试图编写一个类似于a的应用程序,我想画一个椭圆来括起一组数字 我有一个JFrame,它有一个带有GridLayout的JPanel,我在其中添加了几个其他面板。最后,我有了一个类似网格的界面。我希望椭圆位于这些面板的顶部 我试图使用Graphics2D和方法draw,但我甚至无法开始理解如何实例化Graphics2D对象 我所做的是:使用GridLayout从JPanel获取图形对象,然后 g是图形对象 Graphics2D g2 = (Graphics2D) g; g2.draw(new

我试图编写一个类似于a的应用程序,我想画一个椭圆来括起一组数字

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

我试图使用Graphics2D和方法draw,但我甚至无法开始理解如何实例化Graphics2D对象

我所做的是:使用GridLayout从JPanel获取图形对象,然后

g是图形对象

Graphics2D g2 = (Graphics2D) g;

g2.draw(new Ellipse2D.Double(x, y,rectwidth,rectheight));
然后重新绘制gridlayout面板,但不会发生任何事情,也不会引发异常或任何事情


我做错了什么?

基本思想在中得到了检验。这种方法是重写合适JComponent的paintComponent方法,并在被询问时呈现相对于其当前大小的内容。这就引出了数字;这说明了适用于这种情况的重叠半透明形状


或者,向GridLayout中添加适当的组件,例如JLabel或JButton,如图所示。在JLayer中包装的layerI中呈现所需的形状,如中所示,以及引用的示例:,和。

您不应该实例化Graphics2D,您应该从JPanel中重写paintComponentGraphics,并在那里进行绘制。请看这里:哦,谢谢,但是java如何管理paintComponentGraphics?我的意思是,我可以在需要的时候调用它吗?每次重新绘制组件时,都会自动调用此方法。当您确实觉得需要手动触发重新绘制时,可以调用repait,但我认为您不必这样做。我明白了,我会尝试这样做。谢谢查找glassPane或JLayer,此处引用的示例链接指向您的答案,而不是程序员的答案。@BileshGanguly:感谢您的帮助编辑;虽然评论链接是正确的,但我已经编辑了答案以包含示例。谢谢大家,我没有很好地使用图形对象,我可以用它做我想做的事。很高兴你让它工作了;这是在玻璃窗格上绘制的。