如果其中的值大于零,我将在一列的单元格中为文本着色。我知道,已经有人这样问了,但是尽管进行了几个小时的搜索,但我找不到工作的解决方案。一切都给了我一些错误。解决方案,这给我最少的错误是:
public class MyRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setForeground(Color.RED);
double values = Double.parseDouble(c.getInputContext().toString());
if(column == 2){
if(values > 0){
c.setForeground(Color.GREEN);
}
}
return c;
}
}
然而,当我得到这样的引用时:
MyRenderer.getTableCellRendererComponent(table, "ok", true, true, 2, 2);
它给了我这个错误:
Cannot make a static reference to the non-static method getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int) from the type bitc.MyRenderer
但是当方法是静态的时,方法会给我这个错误......:
This static method cannot hide the instance method from DefaultTableCellRenderer
我不知道如何绕过这个。
答案 0 :(得分:1)
我想知道你什么时候试着打电话给MyRenderer.getTableCellRendererComponent(table, "ok", true, true, 2, 2);
?
通常应该这样做:
table.setDefaultRenderer(Double.class, new MyRenderer());
或
table.getColumnModel().getColumn(columnIndex).setCellRenderer(new MyRenderer());