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;
}
}