Πρόβλημα με JComboBox
Posted: Sun Feb 17, 2008 1:41 am
Σε μια java Application υλοποιώντας Swing έχω το εξής πρόβλημα:
Όταν πατάμε ένα JButton επιθυμώ να λαμβάνω μια τιμή από ένα JComboBox και κατόπιν να περνά σαν παράμετρος σε κατασκευαστή αντικειμένου.
Αν χρησιμοποιήσω εσωτερική τάξη ActionListener στο JButton και βάλω στην actionPerformed την εντολή
κάτι = όνομα_κόμπομποξ.getSelectedItem();
δουλεύει περίφημα, για ένα όμως πάτημα του κουμπιού! Αν το ξαναπατήσω, όλα τα νέα αντικείμενα δημιουργούνται με παράμετρο την πρώτη πρώτη σειρά του μενού του ComboBox...
Στο παρελθόν έχω χρησιμοποιήσει άπειρες φορές τη μέθοδο getSelectedItem και πρώτη φορά τρώω τέτοιο κόλλημα. Μια ιδιαιτερότητα είναι πως το Combobox δημιουργείται δυναμικά κάθε φορά που πατώ το κουμπί (χαζό αλλά υπάρχει λόγος...) Αλλά αν αυτό ήταν το πρόβλημα η πρώτη φορά γιατί δουλεύει;
Δοκίμασα να φτιάξω actionListener εσωτερικής τάξης για το ίδιο το Combobox. Αυτό έλυνε το πρόβλημα αλλά για κάποιο λόγο το πρώτο αντικέιμενο δεν δημιουργείται ποτέ και πετά του κόσμου τα exceptions... Το δεύτερο λειτουργεί κανονικά!!!
Όταν πατάμε ένα JButton επιθυμώ να λαμβάνω μια τιμή από ένα JComboBox και κατόπιν να περνά σαν παράμετρος σε κατασκευαστή αντικειμένου.
Αν χρησιμοποιήσω εσωτερική τάξη ActionListener στο JButton και βάλω στην actionPerformed την εντολή
κάτι = όνομα_κόμπομποξ.getSelectedItem();
δουλεύει περίφημα, για ένα όμως πάτημα του κουμπιού! Αν το ξαναπατήσω, όλα τα νέα αντικείμενα δημιουργούνται με παράμετρο την πρώτη πρώτη σειρά του μενού του ComboBox...
Στο παρελθόν έχω χρησιμοποιήσει άπειρες φορές τη μέθοδο getSelectedItem και πρώτη φορά τρώω τέτοιο κόλλημα. Μια ιδιαιτερότητα είναι πως το Combobox δημιουργείται δυναμικά κάθε φορά που πατώ το κουμπί (χαζό αλλά υπάρχει λόγος...) Αλλά αν αυτό ήταν το πρόβλημα η πρώτη φορά γιατί δουλεύει;
Δοκίμασα να φτιάξω actionListener εσωτερικής τάξης για το ίδιο το Combobox. Αυτό έλυνε το πρόβλημα αλλά για κάποιο λόγο το πρώτο αντικέιμενο δεν δημιουργείται ποτέ και πετά του κόσμου τα exceptions... Το δεύτερο λειτουργεί κανονικά!!!