2011-01-25 74 views
3

我試圖在JScrollPane中的JTable後面添加居中的背景圖像。 背景相對於視口的位置應居中且靜態。帶JTable的JScrollpane中的背景圖像

我試着將JScrollPane添加到帶有繪製圖像的JPanel中,並使其他所有內容都變得半透明,但結果很糟糕,並導致渲染問題。

回答

3

您應該子類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); 
+0

正如我所說的,我嘗試過這種方式,但它以表格/滾動窗格的透明度問題而告終。 – 2011-01-25 09:15:57