快速提问。我有两个JComboBox,从2010年到2018年填充了一串年。一个组合框与“开始日期”标签相关联,一个ComboBox与“结束日期”标签相关联。我想确保在“结束日期”中选择的年份少于“开始日期”中选择的年份。我已经找到了如何比较值是组合框的方法,但我找不到适合我具体例子的方法。
以下是一些代码:
String[] YEARS = {"Select a Year", "2010", "2011", "2012", "2013", "2014",
"2015", "2016", "2017", "2018",};
//Start Date
yearLong = new JComboBox(YEARS);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 1;
c.gridwidth = 1;
yearLong.setSelectedItem(Integer.toString(year));
pane.add(yearLong, c);
//End Date
yearLong1 = new JComboBox(YEARS);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridy = 3;
c.gridwidth = 1;
pane.add(yearLong1, c);
为了向你证明我已经尝试了一些东西,到目前为止我已经做了这个错误检查:
//Checks to see if the End Date precedes the Start Date
} else if ((yearLong.getSelectedItem() > yearLong1.getSelectedItem())) {
JOptionPane.showMessageDialog(null, "Error 10: The End Date cannot precede the Start Date.",
"Error!",
JOptionPane.ERROR_MESSAGE);
return;
}
但是我一直收到一条错误消息,说明>在那里不能使用操作。我知道==操作可以,所以我不确定我做错了什么?
像往常一样,谢谢你的帮助!
答案 0 :(得分:2)
错误的原因是getSelectedItem()
实际返回Object
,其中没有定义运算符>
。
由于您使用字符串填充组合,因此在比较日期时应将字符串转换为整数。您可以使用Integer.parseInt()
方法。只需确保正确处理“选择一年”字符串。如果需要,您也可以使用整数填充组合框,它在其构造函数中接受Object
的数组。有关详细信息和示例,请参阅How to Use Combo Boxes。