【发布时间】:2015-12-19 14:06:16
【问题描述】:
我正在使用可编辑的 JComboBox 对数据库进行搜索,但在写作方面,只接受给我写一个字母和任意数量的数字,我该怎么做才能让我写字母和数字?
以下代码只接受数字、退格键、回车键,不接受字母。
comboBusqueda.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
String cadenaEscrita = comboBusqueda.getEditor().getItem().toString();
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
if(comparar(cadenaEscrita)){
buscar(cadenaEscrita);
}else{
buscar(comboBusqueda.getSelectedItem().toString());
comboBusqueda.getSelectedItem();
}
}
if (evt.getKeyCode() >= 65 && evt.getKeyCode() <= 90
|| evt.getKeyCode() >= 96 && evt.getKeyCode() <= 105
|| evt.getKeyCode() == 8
|| evt.getKeyCode() == KeyEvent.VK_ENTER
) {
comboBusqueda.setModel(dc.getLista(cadenaEscrita));
if (comboBusqueda.getItemCount() > 0) {
comboBusqueda.getEditor().setItem(cadenaEscrita);
comboBusqueda.showPopup();
} else {
comboBusqueda.addItem(cadenaEscrita);
}
}
}
});
【问题讨论】:
-
(1) 不要拒绝退格和回车等特定键,只拒绝内容。 (2) 不要使用显式的
int值作为键码,而是使用常量。 (3) 您需要编写一个自定义的ComboBoxEditor来进行内容检查并将其设置为您的组合框的编辑器。