2013-05-31 52 views
0

我有一個數據庫網格顯示數據從數據庫中獲取它的特定列,那就是:禁用的DataGrid

String[] fields={"Comp_Code_No","Building_No","Flat_No","Current_Reading","Previous_Reading","Consumption"}; 
editConsumptionGrid=new UIGrid("Select Comp_Code_No,Building_No,Flat_No,Current_Reading,Previous_Reading,Consumption from Consumption.empty_consumption",fields, MainApp.initDB); 
editConsumptionGrid.getComponent().setPreferredSize(new Dimension(300,200)); 
gbc.gridx=0; 
gbc.gridy=0; 
gbc.ipadx=135; 
gbc.ipady=70; 
gbc.weightx=5; 
gbc.gridwidth=0; 
gbc.fill=GridBagConstraints.HORIZONTAL; 
gridPanel.add(editConsumptionGrid.getComponent(), gbc); 

我們這裏做的是我們傳遞查詢在第一個參數,數據庫表中的列名在第二,數據庫連接對象在第三,它工作正常,現在我想要做的是我只想設置dataGrid的消費列,即在這種情況下,editCinsumptionGrid,可編輯。我可以通過setEditable(false)設置整個電網不可編輯,但是如何設置只能編輯的消耗列和所有不可編輯的其餘部分?

+0

您使用的是什麼擺動組件?這不是一個非常有用的代碼片段。 –

+0

正在使用SSDataGrid。 –

回答

0

假設(因爲我別無選擇)您使用JTable,禁用單元格的方法是覆蓋AbstractTableModel並覆蓋isCellEditable方法。由於您希望在整列上使用此功能,因此只需在該列中的每個單元格上返回false即可。

+0

它不可行先生,因爲該列中的單元格的值和數量是動態的,因爲它來自數據庫。 –

1

這是不可行的先生,因爲該列中的單元格的值和數量是動態的。

您不必在列返回false細胞。由於您希望上一個列可以編輯,只需返回該列索引的true

@Override 
public boolean isCellEditable(int row, int col) { 
    return col == getColumnCount() - 1; 
}