2017-08-16 19 views
-2

我正在制作一个包含日期的申请表单,并且该人员可以通过3个单独的组合框输入日期。我知道如何将选定的项目转换为日期和年份的int以便放入LocalDate,但我不知道如何在没有整个if语句的情况下执行几个月的有效方法。如何从组合框中获取月份并将其设置为一个月的日期

下面的列表:

private static String[] months = {"Month", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; 

这里是组合框:

JComboBox startDateD = new JComboBox(days); 
    JComboBox startDateM = new JComboBox(months); 
    JComboBox startDateY = new JComboBox(years); 

感谢所有帮助

+0

是来自Java 8的'LocalDate'('java.time.LocalDate')吗?另外,还不清楚你想要做什么:获取日,月和年('int'值)并创建一个'LocalDate'或者从日期获取值?或者是其他东西? – 2017-08-16 15:54:01

+0

即时消息试图做的是从组合框中获取月份,并去月份Month.JANUARY – Bravecity

+0

'Month.of(combo.getSelectedIndex())' - 所选索引的值必须从1(1月)到1 12(12月),否则你会得到一个例外。 – 2017-08-16 16:00:20

回答

1

你需要一个听众(在addActionListener),并得到里面的源覆盖方法actionPerformed ...

使用这个例子作为一个指导(注意Month enum需要java8):

public static void main(String[] args) { 
    JFrame someFrame = new JFrame(); 
    someFrame.setTitle("JComboBox Months"); 
    someFrame.setSize(250, 250); 
    JPanel panel = new JPanel(); 

    JComboBox<Month> jcombo = new JComboBox<>(Month.values()); 
    panel.add(jcombo); 
    jcombo.addActionListener(e -> { 
     Month selMonth = (Month) ((JComboBox<Month>) e.getSource()).getSelectedItem(); 
     System.out.println(selMonth); 
    }); 
    someFrame.add(panel); 
    someFrame.setVisible(true); 
} 
相关问题