Java 叠加两个 JPanel

标签 java swing paintcomponent

我正在开发 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

关于Java 叠加两个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805324/

相关文章:

java - 使用 beans 绑定(bind)更新 JLabel 时出现问题

java - Excel::String 单元格值未与 Java 中的整数连接

java - 如何让JComponents背景透明?

java - jbutton 请求并发无响应

java - 在 PaintedImage Java 上绘制字符串

Javac 未与 openjdk-6-jdk 一起安装

java - Kyronet 和 androidstudio - TCP 注册期间超时

java - 如何在 Java 中从字符串设置字体

java - 为什么 PaintComponent 不能接受 Graphics2D 对象?

java - 是什么导致这段代码重新绘制自身?