我正在开发 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 中的文件中绘制图像)
所以,我希望能有一些更好的解决方案。
关于Java 叠加两个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805324/