2016-04-07 18 views
0

これは私の最初の質問です。私は本当に私の英語を残念に思っています。私はJComboBoxのドロップダウンリスト内のナビゲーションにJComboBoxのメインフィールドで選択した項目を表示したくありません(申し訳ありませんが、それを呼び出す方法は分かりません)。ドロップダウンリストのJComboBoxナビゲーションで項目が選択されます

JComboBox

をしかし、私はこのような何かしたい:

は、これは私がリストに移動するときに発生するものである

JComboBox

を、私は、それを入力するか、項目をクリックを押したときメインフィールドに表示されます。ここで

は私のコードです:

import javax.swing.*; 
import javax.swing.text.JTextComponent; 
import java.awt.*; 

public class ComboTest { 

JFrame frame; 
JPanel panel; 
String[] choices = new String[]{ 
     "Java", 
     "Python", 
     "C++", 
     "PHP", 
     "Perl" 
}; 
JComboBox<String> comboBox = new JComboBox<>(choices); 
JTextComponent textComponent; 

public static void main(String[] args){ 
    new ComboTest(); 
} 

public ComboTest() { 

    frame = new JFrame(); 
    panel = new JPanel(); 
    textComponent = (JTextComponent) comboBox.getEditor().getEditorComponent(); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(300, 150); 
    frame.setResizable(false); 

    panel.setLayout(new FlowLayout()); 

    comboBox.setEditable(true); 
    comboBox.setSelectedItem(null); 

    panel.add(comboBox); 
    frame.add(panel); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 
} 

答えて

0

おかげで、このコードブロックを試してみてください。あなたの答えは、私がこれを解決するのを助けました。リスナーaddPopupMenuListenerは私のためには機能しません。しかし、addPopupMenuListeneraddItemListenerに変更したところ、すべて正常に機能しました。

comboBox.addItemListener(new ItemListener() { 
     @Override 
     public void itemStateChanged(final ItemEvent itemEvent) { 
      comboBox.getEditor().setItem(null); 
      comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { 
       @Override 
       public void keyPressed(KeyEvent e) { 
        super.keyPressed(e); 
        if(e.getKeyCode() == KeyEvent.VK_ENTER) 
        { 
         comboBox.getEditor().setItem(itemEvent.getItem()); 
        } 
       } 
      }); 
     } 
    }); 
1

zilkへ

comboBox.addPopupMenuListener(new PopupMenuListener() { 

     @Override 
     public void popupMenuWillBecomeVisible(PopupMenuEvent e) { 
      //when Popupmenu is visible, remove the combobox editor text 
      comboBox.getEditor().setItem(null); 

     } 

     @Override 
     public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 
     } 

     @Override 
     public void popupMenuCanceled(PopupMenuEvent e) { 
     } 
    }); 
関連する問題