2016-03-29 7 views
0

Ich versuche Werte in JComboBox B anzuzeigen, wenn ich Elemente aus JComboBox A auswähle. Bisher ist nichts passiert, wenn ich einen Wert von JComboBox A auswähle. Hier sind meine Daten und Code. Wenn ich zum Beispiel 1 aus meiner JComboBox A (Paperid) wähle, wird mein Ergebnis in JComboBox B (autorid) 1,2,4 sein.So zeigen Sie eine JComboBox an, wenn ein Element in einer anderen JComboBox ausgewählt ist

enter image description here

enter image description hereJComboBox A

enter image description hereJComboBox B

private void comboboxAPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) { 

    String display = (String) comboboxA.getSelectedItem(); 
    String sql = "Select authorid from submission where paperid =?"; 

    try { 
     ps=conn.prepareStatement(sql); 
     ps.setString(1,display); 
     rset = ps.executeQuery(); 

     if (rset.next()){ 
       String add1 = rset.getString("authorid"); 
       System.out.println(add1); 
       comboboxB.setSelectedItem(add1); 
     } 

    } catch(Exception e) { 
     JOptionPane.showMessageDialog(null,e); 
    } 
} 
+0

können Sie Ihre JComboBox sowohl die A & B-Werte in Frage stellen? –

+0

Yeap gerade hinzugefügt. –

+0

Kannst du mir bitte auch erklären, wenn Benutzer 1 aus Combo-A auswählen, was dann in Combo-B angezeigt werden soll? –

Antwort

1

Ich denke, dass ich Ihre Frage endlich verstanden haben. Sie möchten, dass das Ergebnis der Abfrage in der zweiten Combobox berechnet wird, oder?

Wenn das der Fall ist, versuchen Sie diese

private void comboboxAPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) { 

    String display = (String) comboboxA.getSelectedItem(); 
    String sql = "Select authorid from submission where paperid =?"; 

    comboboxB.removeAllItems(); // <- Clear comboboxB 

    try { 
     ps = conn.prepareStatement(sql); 
     ps.setString(1, display); 
     rset = ps.executeQuery(); 

     while (rset.next()) { // <- Include all authors found 
      String add1 = rset.getString("authorid"); 
      System.out.println(add1); 
      comboboxB.addItem(add1); 
     } 

    } catch(Exception e) { 
     JOptionPane.showMessageDialog(null,e); 
    } 
} 

Vielleicht muss man ein Neuzeichnen im Behälter zwingen, wo die JComboBoxes nach der Ausführung dieses Verfahrens wird angezeigt. "myContainer" ist nicht der Variablenname, ersetzen Sie ihn durch den Namen Ihres Panels oder Ihres Frames.

myContainer.revalidate(); 
    myContainer.repaint(); 
+0

Hey RubioRic, danke für die Beantwortung meiner Frage. Momentan kann ich nur 1 Wert anzeigen. Was soll ich tun, wenn ich stattdessen alle Werte anzeigen möchte? Zum Beispiel, wenn ich in ComboA "1" wähle, sollte mein ComboB das Ergebnis von 1,2,4 statt nur "1" geben. –

+0

@JasonChingYuk Verwenden Sie ein "while" anstelle eines "if". Ersetzen Sie "if (rs.next())" durch "while (rs.next())". Es sollte den Trick machen. Es ist bereits in meiner Antwort. Es sollte funktionieren, wenn mehr als ein Autor zu einem in der Datenbank registrierten Papier gehört. Sei so freundlich, die Antwort zu akzeptieren, wenn das für dich funktioniert. – RubioRic

+0

Oh ja, das habe ich verpasst, nochmals vielen Dank! –