更新表GUI我創建了一個使用下面的語法顯示錶一個Java GUI:擴展定製AbstractTableModel上
table = new JTable(new MyTableModel(columnNames,
updateTable(cmbAdversary.getSelectedItem().toString(),
cmbdataType.getSelectedItem().toString())));
其中COLUMNNAMES是字符串 cmbadversary和smbdataType的載體是選擇OD組合框。
和updateTable是向量的向量取決於組合框中選擇如下返回的方法:
static Vector updateTable(String FilterVal1 , String FilterVal2)
{
try {
myVector = tssc.testSeverityFunctionService(FilterVal1,FilterVal2);
} catch (Exception e) {
e.printStackTrace();}
return myVector;
}
這是我的一個擴展AbstractTableModel的定製類MyTableModel的樣子:
class MyTableModel extends AbstractTableModel
{
Vector columnNames = new Vector();
Vector Fdb = new Vector();
public MyTableModel(Vector cName,Vector rName){
this.columnNames = cName;
this.Fdb = rName;}
public int getColumnCount() { // number of columns in the model.
return columnNames.size();
}
public int getRowCount() { // number of rows in the model.
return Fdb.size();
}
@Override
public String getColumnName(int col) {
return columnNames.get(col).toString();
}
public Object getValueAt(int row, int col) {
Vector v = (Vector) this.Fdb.get(row);
return v.get(col);
}
@Override
public Class getColumnClass(int c) {
Vector v = (Vector) Fdb.get(0);
return v.get(c).getClass();}
public boolean isCellEditable(int row, int col)
{ return true; }
public void setValueAt(Vector value, int row, int col)
{
for(int i=0;i<value.size();i++)
{ for(int j=0;j<columnNames.size();j++) {
Fdb.setElementAt(value.get(j),j); }
}
fireTableCellUpdated(row, col);
}
}
問題是,當我運行代碼時,表格GUI向我顯示初始值,但在更改2個組合框中的選擇並單擊選擇按鈕時無法更新。 「選擇」按鈕btw調用實現動作偵聽器的方法。
請幫我一把。我不喜歡Java,但願意學習。如果您有任何後續服務,我會很樂意提供詳細信息。
那麼,你的ActionListener-Method是什麼?它是否簡單地調用`updateTable()`,但是對結果沒有任何作用? – 2011-02-09 14:05:52