我正在编写一个将用户输入值放入JTable的程序,其中一列包含siteNumber。我需要能够检查该siteNumber是否已被使用。这是我的getValueAt()代码。
public Object getValueAt(int row, int col) {
switch(col) {
case 0:
return (listSites.get(row).getNameReserving());
case 1:
return (DateFormat.getDateInstance(DateFormat.SHORT).
format(listSites.get(row).getCheckIn().getTime()));
case 2:
return (listSites.get(row).getDaysStaying());
case 3:
return (listSites.get(row).getSiteNumber());
case 4:
if(listSites.get(row) instanceof Tent)
return("Tents: " + ((Tent) listSites.get(row))
.getNumOfTenters());
else
return ("Power bought: " + ((RV) listSites.get(row))
.getPower() + " Amps");
default:
return null;
}
}
理想情况下,这将是对if(getValueAt(row,col)== siteNumber)的简单检查,但这是将Object与Integer进行比较,我想不出一种解决方法?这是一个大学项目,所以很多不是我最初的想法,我只是想弄清楚他们希望我怎么做。
listSites是Sites的ArrayList,这是我的超类。
抱歉,如果我很愚蠢,但我真的很想解决这个问题。
最佳答案
我不确定您的确切问题,但是如果您要从第3行获取项目,则返回的内容由该调用指定:return (listSites.get(row).getSiteNumber());
。然后,您可以将Object返回的类型转换为Site类的getSiteNumber()
方法指定的类型。我假设它正在返回...一个整数(您不告诉我们)?如果是这样,请将其投放并使用。
听起来您需要什么与JTable或getValueAt(...)
方法没有任何关系。取而代之的是,您似乎需要在用户尝试输入数据的地方进行输入验证,这很可能在您的用户输入对话框代码中。在该代码中,您将搜索listSites集合,以确保未输入重复的站点号,如果输入的是重复的站点号,则警告用户有关其错误的信息,并防止数据输入。也许您想使用附加到JTextField的InputVerifier。