2017-08-16 3 views
-2

Je fais un formulaire de demande qui a des dates et la personne peut entrer la date à travers 3 comboboxes distinctes. Je sais comment convertir l'élément sélectionné en un int pour la journée et l'année à mettre dans la LocalDate mais je ne connais pas un moyen efficace de faire les mois sans une pile de déclarations if.Comment obtenir le mois à partir d'une liste déroulante et en faire un mois dans une date

Voici la liste:

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

Voici les comboboxes:

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

Merci pour toute aide

+0

Est-ce que 'LocalDate' provient de Java 8 (' java.time.LocalDate')? En outre, ce que vous essayez de faire n'est pas clair: obtenir le jour, le mois et l'année (valeurs int) et créer un 'LocalDate' ou obtenir les valeurs de la date? Ou autre chose? –

+0

Qu'est-ce que j'essaie de faire est d'obtenir le mois de la liste déroulante pour aller aux goûts de mois.JANUARY – Bravecity

+0

'Month.of (combo.getSelectedIndex())' - la valeur de l'index sélectionné doit être de 1 (Janvier) à 12 (décembre), sinon vous aurez une exception. –

Répondre

1

Vous avez besoin d'un auditeur (le addActionListener) et obtenir la source à l'intérieur du méthode de remplacement actionPerformed ...

utilisation cet exemple en tant que guide (notez que Month enum requiert 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); 
}