IT源码网

Java 叠加两个 JPanel

Leo_wl 2024年06月20日 程序员 32 0

我正在开发 Java 7 桌面应用程序,主要使用 swing。

我想叠加两个 JPanel。基本上,我有一个 JPanel (1),我想在其中绘制一些内容(使用 paintComponent()),并在其顶部显示另一个 JPanel (2),其中填充有 JScrollPane (3),其中填充有 Jtable (4)。

组件(2、3 和 4)将具有透明背景,以便在 JPanel 1 上看到绘制的组件。

知道如何组织/执行/实现这个吗?

谢谢!

请您参考如下方法:

我找到了正确的方法。

我的 Jpanel (1) 是一个 borderLayout,并且有一个 PaintComponent(gg) 方法,可以绘制一些东西。 我向该面板添加了一个 JScrollPane (3),并在其中添加了一个 Jtable (4)。

这个想法是 3 和 4 有透明背景。

对于 JScrollpane 和 JPanel:

  • jp.setOpaque(false)

对于 JTable 来说,这就更困难了。使用 R、G、B、A,JT 的背景必须是不透明的,并且每个单元格的背景必须是透明的。要使其不透明,请像使用 Jpanel 一样进行处理。然后将 CellRenderer 添加到 JTable 并(对于每个单元格) setBackground(new Color(0,0,0,0));

当我在 ScrollPane 中滚动时,我遇到了一些问题。您必须向 JScrollPane 添加可见性监听器。当 JScrollPane 可见性发生变化时,repaint() Jpanel (1)。

这种方式可以工作,但不流畅。即使是新一代 untrabook(2014)。 (我只从 Jpanel 1 中的文件中绘制图像)

所以,我希望能有一些更好的解决方案。

更新:请参阅:Add background image in JTable


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!