Java 如何在JPanel+;JPanel上的图像

Java 如何在JPanel+;JPanel上的图像,java,swing,Java,Swing,我的项目是JavaSwing 我有一个JPanel,在它的中心添加了一些扩展名为.png的图像(在JLabels上) 现在我想添加一行,它将部分位于JPanel上&部分位于该图像上。 当前,当我添加线条时,JPanel会显示线条,但当我调整图像大小并将其拖动到图像时,图像会隐藏线条 如何才能使图像不隐藏我的线条并在图像上显示?您最好自己绘制图像,并在同一控件的顶部绘制线条。创建一个扩展画布的类,并在paint方法中编写自己的代码来绘制图像,然后绘制线条。您最好自己绘制图像,并在同一控件的顶部绘制

我的项目是JavaSwing

我有一个JPanel,在它的中心添加了一些扩展名为.png的图像(在JLabels上)

现在我想添加一行,它将部分位于JPanel上&部分位于该图像上。 当前,当我添加线条时,JPanel会显示线条,但当我调整图像大小并将其拖动到图像时,图像会隐藏线条


如何才能使图像不隐藏我的线条并在图像上显示?

您最好自己绘制图像,并在同一控件的顶部绘制线条。创建一个扩展画布的类,并在paint方法中编写自己的代码来绘制图像,然后绘制线条。

您最好自己绘制图像,并在同一控件的顶部绘制线条。创建一个扩展画布的类,并在paint方法中编写您自己的代码来绘制图像,然后绘制线条。

您可以尝试使用并为其定义一个自定义的LayerUI来绘制线条。这些将显示在需要绘制的组件上方。 这是一种更高级的方法,涉及到使用第三方(开源)自定义组件,但可以让您改变以后使用哪个Swing组件渲染图像的想法。 我认为这篇文章最好地描述了如何实现你们想要的

过去,我曾以各种方式解决过许多类似的问题,但没有一个具有JXLayer的灵活性和可维护性。

您可以尝试为它使用并定义一个自定义的LayerUI,以画出界限。这些将显示在需要绘制的组件上方。 这是一种更高级的方法,涉及到使用第三方(开源)自定义组件,但可以让您改变以后使用哪个Swing组件渲染图像的想法。 我认为这篇文章最好地描述了如何实现你们想要的


过去,我以各种方式解决了许多类似的问题,但没有一个具有JXLayer的灵活性和可维护性。

另一种选择是使用JLayeredPane而不是JPanel作为主容器,并在更高的层上放置一个非不透明(setOpaque(false))JPanel 使用JLayeredPane.setLayer(yourPanel,highNumber)并使用GridBagLayout或简单的自定义LayoutManager之类的工具填充JLayeredPane


然后可以在该面板上实现自定义绘制。

另一个选项是使用JLayeredPane而不是JPanel作为主容器,并将非不透明(setOpaque(false))JPanel放置在更高的层上 使用JLayeredPane.setLayer(yourPanel,highNumber)并使用GridBagLayout或简单的自定义LayoutManager之类的工具填充JLayeredPane


然后可以在该面板上实现自定义绘制。

如何绘制线?你能提供一些相关的代码片段吗?或者一张截图?你是怎么画的?你能提供一些相关的代码片段吗?或者是截图?