【发布时间】:2016-11-10 11:49:24
【问题描述】:
我正在寻找一种将多个JComponents 相互叠加(重叠)并且仍然能够单独访问和更改它们的方法。
例如用透明背景绘制三个JPanels - 每个都包含一个圆形、一个矩形或一条线。
之后,我想改变圆圈的外观。其他两个不应重新绘制(类似于 Photoshop 中的图层)。
我当前的项目有一个包含数千行的Jpanel,如果我每次重绘完整的Jpanel 非常滞后,我需要在鼠标悬停时更改后面的矩形。
有没有一种体面的方法来实现这一点?已经感谢您的想法!
【问题讨论】:
-
更好的方法是使用一个 JPanel 和几个 BufferedImages 作为图层。按顺序绘制每个 BufferedImage,注意不要绘制透明区域。您必须为动画的每一帧清除并重新绘制整个绘图区域。此外,您的绘图面板paintComponent 方法应该只是绘画。没有计算。除了 Graphics2D 方法之外别无他法。最后一种选择是为您的几何图形建模,并从模型中绘制图形。
-
看看我的Moving Eyes 回答,了解如何在 Swing 中设置绘图面板。
-
听起来可以解决我的问题! BufferedImages 作为图层 - 我会试试的!谢谢!
标签: java swing jcomponent jlayeredpane