2016-05-04 40 views
0

比較值的項目,我需要一個if語句圍繞一個按鈕,檢查精確對2個值的JTable中......如果是假的,它增加了在文本框和2項包裹cbboxes到表,否則它會打印出一個錯誤。到目前爲止,我想出了這一點:從JTable中列在組合框

lblWarn2.setText(""); 
DefaultTableModel model = (DefaultTableModel) tblSold.getModel(); 
//get value at 

if(!cbCruises.getSelectedItem().toString().equals(tblSold.getValueAt(1, 0).toString())&!cbCabin.getSelectedItem().toString().equals(tblSold.getValueAt(1,2).toString())) 

{ 

    model.addRow(new Object[]{cbCruises.getSelectedItem().toString(), txtBuyer.getText(),cbCabin.ToString()}); 

} 
else 
{ 
lblWarn2.setText("Cabin full"); 
} 

(此表有3列,遊輪,買家,客艙BTW) 有沒有一種方法,我可以用它代替getValueAt或者我如何重構它使它會遍歷指定的2列並搜索這些值,然後將它們與組合框中的選定項目進行比較?

EDIT1;更改了if語句,並按照行的確切值執行它應該執行的操作。但是有沒有,讓我通過選定列的所有行運行的方法?

+0

StIng不與!=或==比較,所以這是一個問題,我不知道什麼ERROR是表中的行數,所以這也沒有幫助 – MadProgrammer

+0

將其更改爲model.addRow(new對象[] {cbCruises.getSelectedItem()的toString(),txtBuyer.getText(),Cabin.getSelectedItem()的toString()。}); 。錯誤是什麼NetBeans的默認如果你離開它空。把它留空不會像我想要的那樣工作 – pURanoslav

回答

0

在結束我的解決辦法是這樣的:

lblWarn2.setText(""); 
     DefaultTableModel model = (DefaultTableModel) tblSold.getModel(); 
     //get value at 

     boolean kabTaken = false; 

     for (int i = 0; i < tblSold.getModel().getRowCount(); i++) { 

      if(cbCruises.getSelectedItem().toString().equals(tblSold.getValueAt(i, 0).toString())&cbCabin.getSelectedItem().toString().equals(tblSold.getValueAt(i,2).toString())) 
      { 
       kabTaken = true; 
      } 
     } 

     if (kabTaken) 
     { 
      lblWarn2.setText("Cabin taken");    
     } 
     else 
     { 
     model.addRow(new Object[]{cbCruises.getSelectedItem().toString(), txtBuyer.getText(),cbCabin.getSelectedItem().toString()});  

     } 

基本上你只封裝if語句成一個for循環。