gpt4 book ai didi

java - 通过覆盖 DefaultTableCellRenderer 将图标添加到 JTable

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:36 26 4
gpt4 key购买 nike

我正在尝试通过指定我自己的表格单元格渲染器向特定的 JTable 列添加一个图标,如下所示 (based on parts of this tutorial):

public class MyTableCellRenderer extends DefaultTableCellRenderer {

public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {

JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if(column == MyTableModel.IMAGE_COLUMN){
String status = (String)value;
Icon icon = StatusImageUtil.getStatusIcon(status);

if(icon == null){
label.setText(status);
}else{
label.setIcon(icon);
}
}
return label;
}
}

上面的代码有效但是:

  1. 所有单元格都有图标而不是我想要指定的具体一个if语句
  2. 单元格 MyTableModel.IMAGE_COLUMN 其中应该只有一个图标也有文本。

提前致谢

最佳答案

出于更好的性能原因,JTable 对其呈现的每个单元格重复使用相同的标签。这意味着每次更改时都需要设置文本和图标。

字体、背景颜色等也是如此

 if(icon == null){
label.setText(status);
label.setIcon(null);
}else{
label.setText("");
label.setIcon(icon);
}

应该可以,

关于java - 通过覆盖 DefaultTableCellRenderer 将图标添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291948/

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