将Jtable中的列与组合框中的项进行比较

时间:2016-05-04 09:13:38

标签: java swing jtable

我需要一个if语句,它包含一个按钮,用于检查jtable是否有两个值的EXACT对...如果为false,则将文本框中的条目和2个cbbox添加到表中,否则会输出错误。到目前为止,我已经想出了这个:

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列; Cruises,Buyer,Cabin btw)  有没有我可以使用的方法而不是getValueAt,或者我如何重构它以便它将通过指定的2列并搜索这些值,然后将它们与组合框中的选定项进行比较?

EDIT1;改变了if语句,它完成了它应该在row的确切值上做的事情。但有没有一种方法可以让我浏览所选列中的所有行?

1 个答案:

答案 0 :(得分: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循环中。