2016-05-12 60 views
2

如何从一个对象中的某些列中创建一个表,但不是所有的列?这是所需的输出:Jtable隐藏一些列

ID|Author|Messages 
---------------------------- 
2 |Alice | My first message 
5 |Alice | My second message 
6 |Bob | Hello 

这是对象。

 private String[] columnNames 
      = {"ID","Author", "HideThis", "Messages"}; 

    private Object[][] data = { 
     {"2", "Alice", "Hide this", "My first message"}, 
     {"5", "Alice", "Hide this", "My second message"}, 
     {"6", "Bob", "Hide this", "Hello"} 
    }; 
    private DefaultTableModel model = new DefaultTableModel(data, columnNames); 

我是否必须创建一个新的数据对象并只复制相关的列或有没有方法说columnSetHidden(2)?

回答

1
DefaultTableModel model = new DefaultTableModel(ProcessArray(data,1),columnNames); 

public Object[][] ProcessArray(Object[][] arr,int colindex) { 

      List points = Arrays.asList(arr); 
      for (int i = 0; i < arr.length; i++) { 
       for (int j = 0; j < arr[i].length; j++) { 
        points.remove(arr[i][colindex]); 
       } 
      } 
      Object[][] returnData = (Object[][]) points.toArray(); 
      return returnData; 

     } 

世界上没有API规范中DefaultTableModel删除column,但你可以customize你的二维数组,并删除您需要的列。然后将处理后的数组传递给DefaultTableModel的构造函数。但是,您仍然需要更改列名称。