如何实现选择jtable中一行,然后单击ok按钮,使选中的这一行变成其他颜色

解决方案 »

  1.   

    1.按钮加事件监听器
    2.点击按钮,触发事件,重写DefaultTableCellRenderer中的getTableCellRendererComponent方法
    3.根据选中行的index,改变背景色关键代码如下    jTable.setDefaultRenderer(Object.class, new MyCellRenderer());    class MyCellRenderer extends DefaultTableCellRenderer {
            private static final long serialVersionUID = 1L;
            private final Color ec = new Color(255, 255, 204);
            public Component getTableCellRendererComponent(
                    JTable table, Object data, boolean isSelected, boolean hasFocus, int row, int column) {
                if (row==selectedIndex) {
                    setBackground(ec);
                } 
                setText((String) data);
                return this;
            }
        }
      

  2.   

    改变多行只需要增加判断条件就行if (row==selectedIndex1 || row==selectedIndex2 || row==selectedIndex3 ......) {
         setBackground(ec);
    } 当然你可以把这些行号装在容器中,比如list,array,
    然后改变一下写法if (list.contains(row)) {
         setBackground(ec);
      

  3.   

    class   DateRenderer   extends   DefaultTableCellRenderer   {   
                    @Override
            public   Component   getTableCellRendererComponent(JTable   table,   Object   value,   
                              boolean   isSelected,   boolean   hasFocus,   
                              int   row,   int   column){   
            Component   com   =super.getTableCellRendererComponent(table,   value,   
                                      isSelected,   hasFocus,   
                                      row,   column); 
                              for(int i=0;i<selectRows.length;i++)
                              if   (selectRows[i]==row)//你要变色的行   
                                  { com.setBackground(Color.red);
                              break;}
                              return com;   
                      }  
        }
            selectRows=listTable.getSelectedRows();
            listTable.setDefaultRenderer(Object.class,new DateRenderer()); 
    我的代码是这样写的,但是执行完一次,在行上直接单击行也变色,不知道什么原因