Как убрать функциональность JComboBox "щелкни и посмотри"?
У меня есть JComboBox, который использует GlazedLists для добавления функциональности опережающего ввода. Я хочу, чтобы пользователь набрал строку и увидел опережающий ввод (это работает благодаря Glazedlists). Однако я не хочу, чтобы пользователи могли щелкать стрелку вниз в выпадающем списке и просматривать раскрывающийся список. Я сделал стрелку вниз невидимой и сделал выпадающий список редактируемым, чтобы он напоминал JTextField. Однако вы все еще можете навести указатель мыши на область, где раньше была стрелка вниз, и щелкнуть ее. Это приводит к появлению выпадающего списка. Что я изменяю или какие методы переопределяю, чтобы удалить функцию "нажми и получи".
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));
}
});
1 ответ
Решение
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) {
}
};
}
});