我正在编写一个将用户输入值放入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是站点的ArrayList,是我的超类。
对不起,如果我是傻瓜,但我真的很想搞清楚这一点。
答案 0 :(得分:0)
我不确定您的确切问题,但如果您从第3行获取某个项目,则返回的内容与此调用所指定的相同:return (listSites.get(row).getSiteNumber());
。并且您可以将返回的对象强制转换为Site类的getSiteNumber()
方法指定的类型。我假设它正在返回......一个整数(你不告诉我们)?如果是这样,将其投射到那并使用它。
您需要的声音与JTable或getValueAt(...)
方法几乎没有关系。相反,听起来您需要输入验证用户尝试输入数据的位置,这可能在您的用户输入对话框代码中。在该代码中,您将搜索listSites集合,确保没有输入重复的站点号,如果是,则警告用户他们的错误,并阻止数据输入。也许您想使用附加到JTextField的InputVerifier。