我試圖在JScrollPane中的JTable後面添加居中的背景圖像。 背景相對於視口的位置應居中且靜態。帶JTable的JScrollpane中的背景圖像
我試着將JScrollPane添加到帶有繪製圖像的JPanel中,並使其他所有內容都變得半透明,但結果很糟糕,並導致渲染問題。
我試圖在JScrollPane中的JTable後面添加居中的背景圖像。 背景相對於視口的位置應居中且靜態。帶JTable的JScrollpane中的背景圖像
我試着將JScrollPane添加到帶有繪製圖像的JPanel中,並使其他所有內容都變得半透明,但結果很糟糕,並導致渲染問題。
退房的WatermarkDemo在結束該文章爲一個完整的例子。
您應該子類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);
不知道這是否是你所需要的,但看看在物質外觀及感覺,支持水印: https://substance.dev.java.net/docs/watermarks.html
正如我所說的,我嘗試過這種方式,但它以表格/滾動窗格的透明度問題而告終。 – 2011-01-25 09:15:57