0

我使用 JXTable 并尝试根据值对行着色,但显示为空(但渲染正在运行,因为它在控制台中显示 syso)

public class MyCellRenderer extends JLabel implements TableCellRenderer {
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
            SimpleTableModel mymodel = (SimpleTableModel) jxtableListar.getModel(); 
            ModelProtocolo actualModel= (ModelProtocolo ) mymodel.getProtocolo(rowIndex) ;

            if(actualModel.getValue() > 0) {
                System.out.println("Yep the Render is working");

            }
                        return this;
        }
    }


jxtableListar.setDefaultRenderer(Object.class, new MyCellRenderer ());

我没有找到任何有用的“教程”如何使用 JXTable 渲染器,因为他们谈论了一些关于 Hightlight 的内容,但是所有的教程都是“信息不足”来学习的

有没有什么好的方法/教程可以根据单元格的值为 JXTable 行着色?

4

1 回答 1

0

您的渲染器正在返回一个JLabel没有设置任何内容的(本身)。相反,扩展DefaultTableCellRenderer

public class MyCellRenderer extends DefaultTableCellRenderer {
    @override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
        SimpleTableModel mymodel = (SimpleTableModel) jxtableListar.getModel(); 
        ModelProtocolo actualModel= (ModelProtocolo ) mymodel.getProtocolo(rowIndex) ;

        JLabel label = (JLabel) super.getTableCellRendererComponent(/* pass in all params */);
        label.setText(/*whatever the text should be*/);
        label.setBackground(/*whatever the color should be*/);
        return label;
    }
}
于 2014-10-09T21:30:05.020 回答