JTable中,显示checkbox以及更改选中状态

转自:http://blog.csdn.net/silence1214/article/details/6118054

JTable中,显示checkbox以及更改选中状态

继续做完的JTable的来学习和实践,默认情况下构造的JTable,内容是死的,不能更改,可以通过实现3个TableModel来作为JTable构造时候的参数穿进去,就可以灵活的对JTable就行构造了,来看下我这个JTable的例子,带上注释就好了。


  1. /** 
  2.  *  
  3.  */  
  4. package com.baseframework.core.ui.component;  
  5.   
  6. import javax.swing.JTable;  
  7. import javax.swing.table.AbstractTableModel;  
  8. import javax.swing.table.TableColumn;  
  9.   
  10. /** 
  11.  * @author sunyanan 
  12.  *  
  13.  * 是整体框架的左侧树状导航,也是任务的开始设置地方,整体返回一个JTable的实例 
  14.  * 
  15.  */  
  16. public class LeftTableNavigation {  
  17.   
  18.     // 单例一下  
  19.     private LeftTableNavigation() {};  
  20.       
  21.     private static LeftTableNavigation l = new LeftTableNavigation();  
  22.       
  23.     public static LeftTableNavigation getInstance() {  
  24.           
  25.         return l;  
  26.     }  
  27.       
  28.     // 左侧导航JTable的唯一实例  
  29.     private JTable table;  
  30.       
  31.     /** 
  32.      * 主要的产生导航Table的方法 
  33.      *  
  34.      * @return JTable的实例 
  35.      */  
  36.     public JTable process() {  
  37.           
  38.         if(table == null) {  
  39.             table = new JTable(new LinkTableMode());  
  40.         }  
  41.         // 设置表头不伸缩模式:如果手工调整一个表头栏目,其他的不会跟随着变的  
  42.         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  
  43.         // 设置表头的宽度  
  44.         for(int i = 0; i < table.getColumnCount(); ++i) {  
  45.             TableColumn tc = table.getColumnModel().getColumn(i);  
  46.             tc.setPreferredWidth(table.getColumnName(i).length() * 15);  
  47.         }  
  48.           
  49.         return table;  
  50.     }  
  51.       
  52. }  
  53.   
  54. class LinkTableMode extends AbstractTableModel {  
  55.   
  56.     private static final long serialVersionUID = 1016386589304301730L;  
  57.   
  58.     // 常量配置区  
  59.     private String[] tableHeader = {"初始关键词&列表""采相关词""采网址""采内容""发内容"};  
  60.     private Object[][] data = {{"初始关键词&列表"falsetruetruetrue}};  
  61.       
  62.     @Override  
  63.     public int getColumnCount() {  
  64.           
  65.         return tableHeader.length;  
  66.     }  
  67.   
  68.     @Override  
  69.     public int getRowCount() {  
  70.           
  71.         return data.length;  
  72.     }  
  73.   
  74.     @Override  
  75.     public Object getValueAt(int rowIndex, int columnIndex) {  
  76.           
  77.         return data[rowIndex][columnIndex];  
  78.     }  
  79.   
  80.     @Override  
  81.     public String getColumnName(int column) {  
  82.           
  83.         return tableHeader[column];  
  84.     }  
  85.   
  86.     /** 
  87.      * 默认情况下这个方法不用重新实现的,但是这样就会造成如果这个列式boolean的类型,就当做string来处理了 
  88.      * 如果是boolean的类型那么用checkbox来显示 
  89.      */  
  90.     @Override  
  91.     public Class<?> getColumnClass(int columnIndex) {  
  92.           
  93.         return getValueAt(0, columnIndex).getClass();  
  94.     }  
  95.   
  96.     /** 
  97.      * 来判断当前选中的单元格是够可以被编辑,因为我是从第二列需要可以编辑的,也就是复选框的列可以编辑的,故 
  98.      * 我有个逻辑判断的哈 
  99.      */  
  100.     @Override  
  101.     public boolean isCellEditable(int rowIndex, int columnIndex) {  
  102.         if(columnIndex > 0return true;  
  103.         return false;  
  104.     }  
  105.   
  106.     /** 
  107.      * 如果这个列可以被编辑的话,但是没有这个方法,当回车后是恢复之前的内容的,只有在这个地方通过对新值的 
  108.      * 获取然后再设置进去才会被更改的。 
  109.      */  
  110.     @Override  
  111.     public void setValueAt(Object value, int rowIndex, int columnIndex) {  
  112.         System.out.println("[row: "+ rowIndex + ", column: " + columnIndex + ", value: " + value + " ]");  
  113.         data[rowIndex][columnIndex] = value;  
  114.     }  
  115.       


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值