在另一个 JComboBox 中选择项目时如何显示 JComboBox

How to display a JComboBox when an item is selected in another JComboBox

当我 JComboBox A 中的 select 项时,我试图在 JComboBox B 中显示值。到目前为止,当我 select 来自 JComboBox A 的值时没有任何反应。这是我的数据和代码。因此,例如,如果我 select 1 来自我的 JComboBox A(paperid),我在 JComboBox B(authorid) 中的结果将是 1,2,4.

JComboBox A

JComboBox 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);
    }
 }

我想我终于明白了你的问题。您希望在第二个组合框中收取查询结果,是吗?

如果是这样,试试这个

 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);
   }
}

也许您必须在执行此方法后强制重绘显示 JComboBoxes 的容器。 "myContainer" 不是变量名,请替换为您的面板或框架的名称。

   myContainer.revalidate(); 
   myContainer.repaint();