java在JTable中添加背景图像
我使用了JInternalFrame
,因为我添加了JTable
。现在我想在JTable
中显示背景图像。因此,我在JScrollPane's
自定义代码中添加了以下代码
jScrollPane1 = new javax.swing.JScrollPane(ViewBalanceReportTable) {{
setOpaque(false);
getViewport().setOpaque(false);
}
@Override
protected void paintComponent(Graphics g) {
final int imageWidth = image.getIconWidth();
final int imageHeight = image.getIconHeight();
final Dimension d = getSize();
final int x = (d.width - imageWidth)/2;
final int y = (d.height - imageHeight)/2;
g.drawImage(image.getImage(), x, y, null, null);
super.paintComponent(g);
}
}
但它仍然没有显示背景图像,有人能帮我吗
# 1 楼答案
基本上,您需要确保位于框架顶部的所有内容都是透明的(不透明==false)
这个表是一个特例,它不倾向于遵守
opaque
设置,因为这很容易。相反,我们可以通过使用透明的颜色来欺骗它如果要在任何类型的框架上绘制,最好替换内容窗格。这将允许您在内容区域内进行绘制,而不是在框架边框或菜单等使用的区域内进行绘制
图像表
一个“更简单”的解决方案可能是将图像直接渲染到桌子的背景上。这意味着图像将成为表格的一部分,并随之滚动
这有点棘手,因为
JTable#paintComponent
不仅会填充背景,还会呈现表格内容粘性视口
另一个选项是创建自定义视口。这允许您在大量其他组件的后面呈现内容。这将与您之前遇到的问题相同。桌子及其背景必须设置为透明
这也意味着,通过一些巧妙的工作,你要么“坚持”图像,要么“跟随”内容,这取决于你需要什么
很多都取决于你的实际需求