J'ai 2 classes. lorsque je mets gras 3 lignes dans la méthode addCourses() la boîte de dialogue ne montre pas de liste déroulante dans le panneau mais quand je supprime de addCourses et mettre ces lignes en gras dans le constructeur, JComboBox sont affichés dans le panneau.JComobox ne montre pas dans le JDialog
Mais les données ne s'afficheront pas car les mises à jour des éléments de données vers ComboBox se produiront après la création du constructeur.
Comment puis-je résoudre ce problème.
this.mainPanel.add (courseCombo, BorderLayout.NORTH);
this.mainPanel.add (sessionCombo, BorderLayout.CENTER);
this.mainPanel.add (courseButton, BorderLayout.SOUTH);
public class Updator {
CourseListFrame clf = new CourseListFrame();
for(...){
clf.addContentsToBox(displayName, className);
}
clf.addCourses();
}
et deuxième classe est
public class CourseListFrame extends JDialog implements ActionListener {
public JPanel mainPanel = new JPanel(new BorderLayout(2, 2));
public JButton courseButton = new JButton(("Submit"));
public JComboBox courseCombo;
public JComboBox sessionCombo;
public Multimap<String, String> map; // = HashMultimap.create();
public static CourseListFrame courseListDialog;
public CourseListFrame() {
super(this.getMainFrame());
this.getContentPane().add(mainPanel);
map = HashMultimap.create();
courseCombo = new JComboBox();
courseCombo.addItem("Select Courses");
courseCombo.addActionListener(this);
sessionCombo = new JComboBox();
}
public void addContentsToBox(String course, String session) {
map.put(course, session);
courseCombo.addItem(course);
}
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox) e.getSource();
String str = (String) cb.getSelectedItem();
setSessionCombo(str);
}
public void setSessionCombo(String course) {
if (map.containsKey(course)) {
sessionCombo.removeAllItems();
Iterator it = map.get(course).iterator();
while (it.hasNext()) {
sessionCombo.addItem(it.next());
}
}
}
public void addCourses() {
this.mainPanel.add(courseCombo, BorderLayout.NORTH);
this.mainPanel.add(sessionCombo, BorderLayout.CENTER);
this.mainPanel.add(courseButton, BorderLayout.SOUTH);
}
public static void showCourseListDialog() {
if (courseListDialog == null) {
courseListDialog = new CourseListFrame();
}
courseListDialog.pack();
courseListDialog.setVisible(true);
courseListDialog.setSize(260, 180);
}
}
l'utilisation de 'this' dans votre appel à' super() 'ne devrait pas compiler. – akf
Quitter la publication croisée: http://forums.sun.com/thread.jspa?threadID=5441271&tstart=0. Passez plus de temps à poser une bonne question avec le code à l'appui et moins de temps à poster. Vous n'avez toujours pas produit un SSCCE approprié et par conséquent vous n'avez toujours pas votre réponse. – camickr