2016-04-07 8 views
0

öğesini seçiyor. Bu benim ilk sorum ve İngilizcem için gerçekten üzgünüm. JComboBox'ın açılır listesinde gezinmek istemiyorum "JComboBox'un ana alanında" seçilen öğeyi göster (üzgünüm, nasıl aradığını bilmiyorum, resimleri gör).Açılır listeden JComboBox navigasyonu,

JComboBox

Ama hiç böyle bir şey istiyorum:

Bu benim listede gezinmek zaman ne nedir

JComboBox

ve ben bunu girin veya öğeye tıklandığında bastığınızda ana alanda görünür.

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

cevap

0

Teşekkür deneyin:

İşte benim kodudur. Cevabınız bunu çözmemde bana yardımcı oldu. Dinleyici addPopupMenuListener benim için çalışmıyor. Ama addPopupMenuListener'u addItemListener olarak değiştirdiğimde, her şey iyi çalıştı.

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

bu kod bloğunu Zilk için

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