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. :frowning:

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. :frowning:

Sabe como solucionar???