我正在 Eclipse 下使用 Java 和 Swing 开发个人项目。
我有一个自定义 JTable 来呈现单元格。
public class CustomJTable extends JTable{
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
// change background of rows if [row,13] is even
c.setBackground(getBackground());
if( (int)getModel().getValueAt(row, 13) %2 == 0)
c.setBackground(Color.YELLOW);
// change font, border e background of cells if a string field is equal to some predeterminated value
Font myFont = new Font(TOOL_TIP_TEXT_KEY, Font.ITALIC | Font.BOLD, 12);
c.setForeground(getForeground());
if (getModel().getValueAt(row, column)=="VALUE"){
((JComponent) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.RED)); //needs cast for using setBorder
c.setFont(myFont);
c.setForeground(Color.RED);
c.setBackground(new Color(255, 230, 230));
}
//set disabled cells appearance
if (getModel().getValueAt(row, column)=="DISABLED"){
((JComponent) c).setBorder(new MatteBorder(1, 1, 1, 1, Color.GRAY));
c.setForeground(Color.LIGHT_GRAY);
c.setBackground(Color.LIGHT_GRAY);
}
return c;
}
我的 CustomJTable 从自定义 TableModel(扩展 AbstractTableModel)中获取值,该自定义 TableModel 包含一个具有重写方法的类向量。
如果我在向量中添加一个类似这样的元素,myModel.getVector().add(element)
我没有问题。在我输入之后myTable.updateUI()
,Row 会自动添加到 CustomJtable 中,并且它也是正确的并且也被渲染了。一切都很完美!!!
当我尝试从之前保存的外部 .XML 添加行时,就会出现问题。我添加到 JTable 中的数据是正确的,黄色行背景也发生了变化,但未呈现单元格(不是单元格边框,不是字体更改,不是红色单元格背景)。
我什么都试过了。validate()
, repaint()
, fireTableCellChanged()
...我找不到错误。谁能帮我?