比较两个JComboBox的值

时间:2013-04-04 16:29:56

标签: java string swing jcombobox gridbaglayout

快速提问。我有两个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;
         }

但是我一直收到一条错误消息,说明>在那里不能使用操作。我知道==操作可以,所以我不确定我做错了什么?

像往常一样,谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

错误的原因是getSelectedItem()实际返回Object,其中没有定义运算符>

由于您使用字符串填充组合,因此在比较日期时应将字符串转换为整数。您可以使用Integer.parseInt()方法。只需确保正确处理“选择一年”字符串。如果需要,您也可以使用整数填充组合框,它在其构造函数中接受Object的数组。有关详细信息和示例,请参阅How to Use Combo Boxes