2016-03-29 3 views
0

JComboBox Aからアイテムを選択するとJComboBox Bに値を表示しようとしています。今のところ、JComboBox Aの値を選択すると何も起こりません。ここに私のデータとコードがあります。たとえば、JComboBox A(paperid)から1を選択すると、JComboBox B(authorid)の結果は1,2,4になります。他のJComboBoxでアイテムが選択されているときにJComboBoxを表示する方法

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

あなたのJComboBoxにA&Bの値の両方を質問に投稿できますか? –

+0

ちょうど追加されました。 –

+0

Combo-Aから1を選択し、Combo-Bに表示する予定がある場合は、私にも説明してください。 –

答えて

1

私は最後にあなたの質問を理解してきたと思います。 2番目のコンボボックスにクエリの結果を請求したいのですか?

その場合は、たぶん、あなたはJComboBoxesは、このメソッドの実行後に表示されている容器に再描画を強制する必要があり、この

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

を試してみてください。 "myContainer"は変数名ではありません。パネルまたはフレームの名前に置き換えてください。

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

ちょっとRubioRic、私の質問にお返事いただきありがとうございます。今は1つの値しか表示できません。代わりにすべての値を表示する場合はどうすればよいですか。たとえば、私がcomboAで "1"を選択した場合、私のcomboBは私にちょうど "1"の代わりに1,2,4の結果を与えるべきです。 –

+0

@JasonChingYuk "if"の代わりに "while"を使用します。 "if(rs.next())"を "while(rs.next())"に置き換えます。それはトリックを行う必要があります。それはすでに私の答えです。 DBに登録されている論文に関連する著者が複数いる場合は、これが有効です。それがあなたのために働くならば、答えを受け入れるように親切にしてください。 – RubioRic

+0

ああ私はそれを逃した、もう一度、ありがとう! –

関連する問題