2014-10-09 103 views
0

IM使用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行的基础上细胞的价值?

回答

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; 
    } 
} 
+0

的工作,但我失去了在JTable – user2582318 2014-10-09 22:06:30

+0

“点击”和“选择”的能力没关系,我所做的,如果(isSelected),感谢=) – user2582318 2014-10-09 22:11:00