gpt4 book ai didi

java - 如何使用渲染器在 Jtable 单元格中设置图像?

转载 作者:行者123 更新时间:2023-11-30 05:54:33 26 4
gpt4 key购买 nike

我正在使用以下代码在 JTable 单元格中显示图像。我有两个关于在 jtable 单元格中添加图像的问题。

1.如果我单击表格中的第一行,“Pointer.gif”图像将显示在该行中。当我单击第二行时,“pointer.gif”图像将显示在第二行中,第一行行获取“Blank.Gif”。然后我单击第三行,Pointer.gif 将显示在第三行,第二行从第一行获取“blank.gif”。此时第一行将变为空(这意味着第一行没有得到 pointer.gif 和 blank.gif)。如何做到这一点?

2.第二个问题是,如果我选择第一行,pointer.gif 将显示在第一行。当我单击第二行时,pointer.gif 将移动第二行,第一行变为空。如何做这个?

我的问题是,当我使用以下代码时,“blank.gif”将显示在整个列中。当我单击特定行时,“pointer.gif”将显示在该位置。

    class FRM_FLXD_ICON_ASSGN extends DefaultTableCellRenderer {
ImageIcon Icon;
public Component getTableCellRendererComponent(
JTable table, Object value, boolean selected, boolean focus,
int row, int col) {
if(selected == true){
Icon=new ImageIcon(getClass().getResource("pointer.gif"));
}
else{
Icon=new ImageIcon(getClass().getResource("blank.jpg"));
}
this.setIcon(Icon);
return this;
}

}
call this class like,

table1.getColumnModel().getColumn(0).setCellRenderer(new FRM_FLXD_ICON_ASSGN());

最佳答案

在您的渲染器中,getTableCellRendererComponent 将返回带有图标的 jLabel。

class FRM_FLXD_ICON_ASSGN extends DefaultTableCellRenderer {
JLabel jLabel;
public Component getTableCellRendererComponent(
JTable table, Object value, boolean selected, boolean focus, int row, int col) {
jLabel = new JLabel();
if(selected == true){
jLabel.setIcon(new ImageIcon(ImageIO.read(new File("C://pointer.jpg"))));
}
else{
jLabel.setIcon(new ImageIcon(ImageIO.read(new File("C://blank.jpg"))));
}
return jLabel;
}
}

关于java - 如何使用渲染器在 Jtable 单元格中设置图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com