Вы должны создать подкласс JTable
и переопределить его метод paint
, чтобы он рисовал фоновое изображение.Вот пример кода:
final JTable table = new JTable(10, 5) {
final ImageIcon image = new ImageIcon("myimage.png");
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
final Component c = super.prepareRenderer(renderer, row, column);
if (c instanceof JComponent){
((JComponent) c).setOpaque(false);
}
return c;
}
@Override
public void paint(Graphics g) {
//draw image in centre
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.paint(g);
}
};
table.setOpaque(false);
final JScrollPane sp = new JScrollPane(table);
final JFrame f = new JFrame();
f.getContentPane().add(sp);
f.setSize(200,200);
f.setVisible(true);