Java 如何在JTable上添加图像背景,在滚动JTable时不会滚动
我需要在我的JTable后面添加一个图像背景,在滚动我的JTable时不应该向下滚动。目前,我已经在我的JTable后面添加了一个图像。使用绘画方法Java 如何在JTable上添加图像背景,在滚动JTable时不会滚动,java,swing,background,jtable,jscrollpane,Java,Swing,Background,Jtable,Jscrollpane,我需要在我的JTable后面添加一个图像背景,在滚动我的JTable时不应该向下滚动。目前,我已经在我的JTable后面添加了一个图像。使用绘画方法 public void paint(Graphics g) { // First draw the background image - tiled Dimension d = getSize(); for (int x = 0
public void paint(Graphics g)
{
// First draw the background image - tiled
Dimension d = getSize();
for (int x = 0; x < d.width; x += image.getIconWidth())
for (int y = 0; y < d.height; y += image.getIconHeight())
g.drawImage(image.getImage(), x, y, null, null);
// Now let the regular paint code do it's work
super.paint(g);
}
public void绘制(图形g)
{
//首先绘制背景图像-平铺
维度d=getSize();
对于(int x=0;x
问题是。此JTable位于JScrollPane。当滚动窗格时。也可以向下滚动图像。并在每个卷轴上重复图像
有没有办法限制只在后台滚动。谢谢在
JScrollPane
上绘制背景。您还需要使用setOpaque(false)
使JTable
和单元格渲染器透明。(并在重写时使用paintComponent
方法)
下面的代码生成了此屏幕截图:
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame("Test");
final BufferedImage image = ImageIO.read(new URL(
"http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png"));
JTable table = new JTable(16, 3) {{
setOpaque(false);
setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {{
setOpaque(false);
}});
}};
frame.add(new JScrollPane(table) {{
setOpaque(false);
getViewport().setOpaque(false);
}
@Override
protected void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
super.paintComponent(g);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
- 您可以绘制
,与其他JTable的背景
JComponents的背景相同/相似
- 您必须重写
,而不是方法paintComponent()
paint()
- 您可以在
上绘画,还有JXLayer(Java6)
JLayer(Java7)