Cara, dá uma olhada em setKeySelectionManager do JComboBox, ai vc pode criar a sua regra de tratamento!!!
Espero que te ajude!!!
Cara, dá uma olhada em setKeySelectionManager do JComboBox, ai vc pode criar a sua regra de tratamento!!!
Espero que te ajude!!!
Cara, testei um pedaço do teu código e funcionou!!!
Veja esse exemplo que eu fiz (meio bagaceiro, mas foi o que deu tempo, hehehe) :
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.Date;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Tela extends JFrame {
public Tela() {
super("Lixo");
Container c = getContentPane();
JComboBox cb = new JComboBox();
cb.addItem("Lixo 01");
cb.addItem("Nada 01");
cb.addItem("Nothing 01");
cb.addItem("Normal 01");
cb.addItem("Outro 01");
c.add(cb);
cb.setKeySelectionManager( new JComboBox.KeySelectionManager() {
StringBuffer buffer = new StringBuffer();
long tempo;
public int selectionForKey(char aKey, ComboBoxModel aModel) {
System.out.println("tempo : " + tempo);
System.out.println("tempo 2 : " + Calendar.getInstance().getTimeInMillis());
if (Calendar.getInstance().getTimeInMillis() - tempo > 500) {
buffer.delete(0, buffer.length());
}
buffer.append(aKey);
tempo = Calendar.getInstance().getTimeInMillis();
int size = aModel.getSize();
System.out.println(buffer.toString());
for (int i = 0; i < size; i++) {
if (aModel.getElementAt(i).toString().toUpperCase().startsWith(buffer.toString().toUpperCase())) {
return i;
}
}
return 0;
}
});
setSize(100,100);
addWindowListener(new WindowAdapter() {
/* (non-Javadoc)
* @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent)
*/
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
show();
}
public static void main(String[] args) {
new Tela();
}
}
Fallow
Olha, não consegui enxergar nenhuma solução muito fácil… Sei que uma possibilidade seria vocÊ criar o seu proprio ComboBoxEditor, por exemplo com JTextField embutido… Ai vc pode colocar o addKeyListener nele… Com certeza vai funcionar!!!
ps.: isso que eu gosto no swing… Não tem como fazer, ah, tem sim, nem que seja do zero, hehehe
Fallow
Eu estou tentando saber qnd uma tecla é pressionada no JComboBox mas eu não estou conseguindo.
Tentei usar o addKeyListener(), mas nd acontece.
E… Alguém já implementou um Combo, que, a medida que vai digitando vai mostrando as possíveis possibilidades???
Nunca esse método é chamado aqui.
O addKeyListener tb nunca é chamado.
Da uma olhada ae no código, a classe extende a JComboBox.
.....
Arrays.sort(elementos);
setBackground(new Color(255, 255, 255));
setEditable(true);
setFont(new Font("Verdana", 1, 12));
setMaximumRowCount(3);
setModel(new DefaultComboBoxModel(elementos));
setKeySelectionManager(new JComboBox.KeySelectionManager() {
public int selectionForKey(char key, ComboBoxModel Model) {
System.out.println("Marcelo");
return 0;
}
});
KeyAdapter ka = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println("Marcelo");
}
};
addKeyListener(ka);
......
Blz TedLoprao,
O seu código funfou aqui legal.
Mas, qnd eu coloco cb.setEditable(true);, ae não funciona.
Sabe como solucionar???