2012-10-28 60 views
0

我在eclipse中使用Window Builder插件來製作所有的可視化組件,並且我添加了一個JTable,起初它是一個簡單的JTable,並且它能夠正確顯示數據。因爲我需要JTable的數據是不可編輯的,所以我創建了一個模型來使用isCellEditable方法。我的代碼是這樣的。來自AbstractTableModel的JTable沒有顯示

public class MyTableModel extends AbstractTableModel { 

     private static final long serialVersionUID = 1L; 
     private String[] columnNames; 
     private Object[][] data; 

     public MyTableModel(Object[][] sentdata, String[] cnames){ 
      columnNames = cnames; 
      data = sentdata; 
     } 

     @Override 
     public int getColumnCount() { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public int getRowCount() { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public Object getValueAt(int rowIndex, int columnIndex) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     public boolean isCellEditable (int row, int column){ 
      return false; 
     } 

    }//fin del modelo 

,並在類的構造函數是這個

String[] NombresdeColumnas = {"Nombre del Producto", "Cantidad en Inventario", "Precio Unitario"}; 
RegistroInventario inventariodatos = new RegistroInventario(); 
Object[][] data = inventariodatos.regresarInventario(); 

MyTableModel model1 = new MyTableModel(data, NombresdeColumnas); 

Table_Inventario = new JTable(model1); 
Table_Inventario.setGridColor(Color.gray); 

JScrollPane scrollPane_1 = new JScrollPane(); 
scrollPane_1.setViewportView(Table_Inventario); 

和它不顯示任何東西,但我這樣做的時候:

Table_Inventario = new JTable(data, NombresdeColumnas); 

它工作得很好,我不知道這個錯誤是否與deBuilder的form eclipse或者代碼原因一樣,都是新的JTables。

回答

2

您的問題是

public int getColumnCount() { 

public int getRowCount() { 

使用DefaultTableModel代替return 0;,如果確定是不是有使用AbstractTableModelObject[][]數據或Vector of Vectors

使用真正重要的問題AbstractTableModel使我感興趣的基於模型在HashMapjava.util.List e.i.

+0

感謝的人我想不會的方法並沒有taht重要'How to create a TableModel'部分,我事情會在有關AbstractTableModel的詳細探索多一點。 – Pedro

+0

[可以開始](http://stackoverflow.com/questions/6900628/refreshing-background-color-for-a-row-in-jtable/6901508#6901508) – mKorbel

2

AbstractTableModel不包含任何數據。

您通過執行getColumnCountgetRowCount方法指出它包含零行和零列。

即使您調整了這些方法,也不會使用構造函數中傳遞的數據,因爲您始終在getValueAt方法中返回null

我想你應該開始閱讀從表教程