2017-01-06 10 views
0

私はユーザーが編集可能なコンボで入力したものを入手し、コンボアコーディオンを研究して再入力する必要があります。私はこのようにしようとしています:javaのドロップダウンリストのような編集可能なコンボボックスの使い方は?

JTextComponent editor = (JTextComponent) cb.getEditor().getEditorComponent();  

    editor.addKeyListener(new KeyAdapter() { 
     public void keyReleased(KeyEvent evt) { 
      atualizarCombo(); 
     } 
    }); 

しかし、私が編集可能なコンボの値を取得しようとすると、それだけで最初の文字と、すべてのdisapeersを取得します:

static void atualizarCombo(){ 
    try { 

     System.out.println("action"); 
     String typed = (String) cb.getEditor().getItem(); 

     newSelection = typed; 
     newSelection = newSelection.trim(); 
     carregarCombo(newSelection); 

    } catch (SQLException ex) { 
     Logger.getLogger(TesteCombo.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+3

有効な[mcve]または[短い、自己完結型、正しい例(SSCCE)](http://sscce.org/)を投稿してください。完全なサンプルコードは、問題を示しています。ここに掲載するには十分に短く、W/Oをコピー&ペーストすることができます。インポートとメインメソッドも含める必要があります)。 [ツアー]に行って[ヘルプ]を見てから、良い質問をしてください。 – Frakcool

答えて

1

それは最初の値のみを取得しているので、あなたはkeyListenerを使用しています。この場合、あなたのkeyReleasedメソッドが呼び出されるたびにキーが「解放」されます。このコードを投稿していないため、あなたのcarregarComboメソッドが何をしているのか分かりません。しかし、私はDocumentListenerをkeyListenerの代わりに使用します

+0

実際に最初の値を取得することは、KeyListenerに問題はありません。問題はコード内のどこかにあります(これが[mcve]を投稿する理由です)。しかし、これは新しいAPIであるため、DocumentListenerを使用する必要があることに同意します。詳細と実行例については、[ドキュメントの変更点のリスニング](http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#doclisteners)のSwingチュートリアルのセクションを参照してください。この提案のために(1+)。 – camickr

関連する問題