我的应用程序中有一个默认的 jtable。我想做一些检查,并更改第一列等于 close 的所有行的颜色。
我一直在尝试这样做,我们得到的最多的是:
String x = jTable.getModel().getValueAt(0, 0).toString();
if(x.equals("close"))
{
jTable.setForeground(Color.red);
}
但按照我的方式,改变了所有线条的颜色。并且只检查表的第一个元素。
我喜欢检查所有行,只更改那些第一列等于 close 的行。
有人可以帮我吗?
感谢您给我的所有帮助。
问候。
最佳答案
您需要使用TableCellRenderer
。该组件就像一个橡皮图章,可以在表格上移动并在需要时绘制单元格 - 与 Swing 中的普通组件不同,Swing 中的普通组件在一个位置具有很长的生命周期。
以下是您可以在桌面上使用的示例。
class MyTableCellRenderer extends JLabel implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (table.getModel().getValueAt(row, 0).equals("close")) {
setForeground(Color.RED);
} else {
setForeground(Color.BLACK);
}
setText(String.valueOf(value));
return this;
}
}
public JTableFrame() {
JTable table = new JTable();
// Give your table some data:
// table.setModel(new BlahTableModel());
// Install the renderer on all columns
MyTableCellRenderer renderer = new MyTableCellRenderer();
table.getColumnModel().getColumn(0).setCellRenderer(renderer);
table.getColumnModel().getColumn(1).setCellRenderer(renderer);
getContentPane().add(BorderLayout.CENTER, new JScrollPane(table));
}
关于java - 如何更改默认 jtable 中特定行的前景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270420/