我需要一个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的确切值上做的事情。但有没有一种方法可以让我浏览所选列中的所有行?
答案 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循环中。