Java 设置JTable背景标题图像

Java 设置JTable背景标题图像,java,swing,jtable,tablecellrenderer,jtableheader,Java,Swing,Jtable,Tablecellrenderer,Jtableheader,有没有一种简单的方法可以将JTable标题的背景设置为图像? 我目前有一个类扩展了DefaultTableCellRenderer,以更改备用行的格式(以及作为测试的标题): 我正在为JButtons做一些类似的事情(我希望它能正常工作): public class CustomButton extends JButton { /** * */ private static final long serialVersionUID = 1L; pr

有没有一种简单的方法可以将
JTable
标题的背景设置为图像? 我目前有一个类扩展了
DefaultTableCellRenderer
,以更改备用行的格式(以及作为测试的标题):

我正在为JButtons做一些类似的事情(我希望它能正常工作):

public class CustomButton extends JButton {

     /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Image img;

    public CustomButton(String a){
        super(a);
        try{
            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            InputStream inputStream = classLoader.getResourceAsStream("lightWoodTexture.jpg");
            img = ImageIO.read(inputStream);
            this.setPreferredSize(new Dimension(100,50));
            this.setBackground(new Color(1,1,1, (float) 0.01));
            this.setFont(new Font("Apple Casual", 1, 12));
            this.setForeground(Color.WHITE);
        } catch(IOException e) {
            System.out.println(e.toString());
        }
    }

     @Override
        protected void paintComponent(Graphics g) {
            g.drawImage(img,0,0,null);
            super.paintComponent(g);
        }
}
此代码将渲染器设置为表格标题。在渲染器中,您可以将图像绘制到
JLabel

图像单元渲染器:

class ImageHeaderRenderer extends DefaultTableCellRenderer {
  JLabel label = new JLabel();

  ImageIcon icon = new ImageIcon(getClass().getResource("image.png"));

  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
      boolean hasFocus, int row, int column) {
    label.setText("");
    label.setIcon(icon);
    return label;
  }
}

那么,我是需要为标题使用单独的呈现程序,还是只需要将方法添加到我的
CustomTable()
类中?有没有一种方法可以对所有列执行此操作,而不是引用特定的列索引?我建议您为表头创建另一个呈现器。您也可以通过
table.getTableHeader().setDefaultRenderer()设置它。
谢谢。我不确定您将图像绘制到
JLabel
是什么意思?对不起,我是一个使用表格渲染器的初学者。
table.getTableHeader().setDefaultRenderer(new ImageHeaderRenderer());
class ImageHeaderRenderer extends DefaultTableCellRenderer {
  JLabel label = new JLabel();

  ImageIcon icon = new ImageIcon(getClass().getResource("image.png"));

  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
      boolean hasFocus, int row, int column) {
    label.setText("");
    label.setIcon(icon);
    return label;
  }
}