2012-05-01 77 views
0

我使用Java bean綁定來綁定Jtable,並在其中api給出整數或浮點值(如0或0.0)的默認值,如下所示。我想避免相應的默認值並設置除最後一個單元格值外,這些單元格爲空JTable綁定迴避默認值

1  WW  88.0  88.0  1021021  340.0  
4  TT  55.0  55.0  1021021  340.0  
5  PP  66.0  66.0  1021021  340.0 

       0   0   0   1020 

2  gg  66.0  66.0  1021022  320.0  
3  LL  658.0  652.0  1021022  320.0 

       0   0   0    640 

和表應該看起來像..

1  WW  88.0  88.0  1021021  340.0  
4  TT  55.0  55.0  1021021  340.0  
5  PP  66.0  66.0  1021021  340.0 

                1020 

2  gg  66.0  66.0  1021022  320.0  
3  LL  658.0  652.0  1021022  320.0 

                640 

任何一個誰可以提出更好的辦法來解決這個問題,它會提前大滿和感謝。

回答

0

我正在使用Jtable beans綁定並使用beansbinding-1.2.1.jar api進行自動綁定。我下載了beansbinding-1.2.1.jar源並進行相關的修改在類

/org.jdesktop.swingbinding.JTableBinding.java

containing the class BindingTableModel.java which implements the TableModel and I overridden the method as per the suggestions of above two friends and thanks to all... 

@覆蓋

public Object getValueAt(int row, int column) { 
      Object value = valueAt(row, column); 

      if (value != null 
        && (value.toString().equals("0") || value.toString() 
          .equals("0.0")|| value.toString().equals("default"))) { 
       return null; 
      } 

      return value; 
     } 
+0

我不認爲這是你想要的方式......我建議在你使用它的地方擴展BindingTableModel,否則你堅持要使用BindingTableModel的任何其他情況也會得到這種行爲。一般來說,去改變第三方jar的來源通常是一個壞主意。 (另外,這是一個很好的習慣來接受答案...) – amaidment

+0

已修改我的答案,以顯示你應該如何做到這一點... – amaidment

+0

嘿,私人最終課BindingTableModel擴展ListBindingManager實現TableModel。是JTableBinding內部的BidingTableModel的結構,那麼如何才能擴展BindingTableModel類。 –

1

我建議這應該在TableModel中完成,特別是使用getValueAt(int row, int column)方法。喜歡的東西:

public Object getValueAt(int rowIndex, int columnIndex){ 
    Object cellValue = // get your values out of your Beans... 
    if (cellValue==0 && columnIndex!=LAST_COLUMN_INDEX){ 
    return null; 
    } 
    return cellValue; 
} 
+0

唯一的問題使用此解決方案時,API的默認值將不再存在,因爲它將被null覆蓋,即使在需要默認值的地方也是如此。 –

1

我想的第一列是空白的這個問題發言

可以重寫TableModelgetValueAt(int row, int column)方法。

@Override 
public Object getValueAt(int row, int column){ 
    Object value = super.getValueAt(row, column);//Or get it from the Vector defined 
    if(column == 2) {//Demo for the third column do same for other columns 
    //Check the value in the first column if it is coming null 
    if (null == getValueAt(row, 0) || getValueAt(row, 0) == ""){ 
     return null; // null means blank cell 
    } 
    } 
    return value; 
}