2014-01-30 3 views
2

У меня есть JComboBox, который использует GlazedLists для добавления функциональности переднего плана. Я хочу, чтобы пользователь вводил строку и видел тип-вперед (это работает благодаря Glazedlists). Однако я не хочу, чтобы пользователи могли щелкнуть стрелку вниз со списком и просмотреть раскрывающийся список. Я сделал невидимую стрелку вниз и сделал редактирование combobox таким, чтобы оно напоминало JTextField. Однако вы все еще можете навести курсор мыши на область, где раньше была стрелка вниз, и нажимать на нее. Это приводит к появлению выпадающего списка. Что я могу изменить или какие методы переопределить, чтобы удалить функциональность «щелчок и получение выпадающего списка».Как удалить функциональность JComboBox и просмотреть раскрывающийся список?

ComboBox<String> box = new ComboBox<String>(); 
box.setEditable(true); 
box.setUI(new BasicComboBoxUI(){ // make the down arrow invisible 
    protected JButton createArrowButton() { 
     return new JButton() { 
      public int getWidth() { 
       return 0; 
      } 
     }; 
    } 
}); 

SwingUtilities.invokeLater(new Runnable(){ 
    public void run(){ 
     Object[] elements = new Object[] {"java", "perl", "python", "haskell", "erlang", "groovy"}; 
     AutoCompleteSupport.install(box, GlazedLists.eventListOf(elements));  
    } 
}); 

ответ

2

Override JButton#addMouseListener:

JComboBox<String> box = new JComboBox<>(); 
box.setEditable(true); 
box.setUI(new BasicComboBoxUI() { // make the down arrow invisible 
    protected JButton createArrowButton() { 
     return new JButton() { 
      public int getWidth() { 
       return 0; 
      } 

      @Override 
      public synchronized void addMouseListener(MouseListener l) { 
      } 
     }; 
    } 
}); 
Смежные вопросы