2016-05-12 46 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的構造函數。但是,您仍然需要更改列名稱。