2017-08-16 54 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); 
} 
相關問題