我正在编写一个将用户输入值放入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

09-27 15:13