Lista telefonica em java

10 respostas
C

é o seguinte,

tem um jtextfield onde eu digito o nome, para procurar na lista.

na tela tbm, tenho um jtable onde fica a lista telefonica, q vem do banco de dados

eu gostaria se tivesse como, na hora q tivesse digitando já fosse filtrando os nomes. parece simples, mas para min eh complicado, sei q tem como, se alguem puder me ajudar.

10 Respostas

A

Não sei se o java faz auto-complete, mas sei que o ajax faz isso ^^
(tb sou novato)

sorte ai

C

não precisar ser autocomplete, tipo Digite DI

aparecer Diego, Diogo,

sobronome tbm, Dias etc,

kenneth

Cara,

Acredito que voce possa fazer a consulta no banco toda
vez que o cara digitar um caracter…

Mas voce vai ter que avaliar se esse trafego todo nao
vai prejudicar seu sistema…

Por se tratar de uma lista telefonica, acredito que sao muitos
registros, nao?

Abraco!

C

acredito q em torno de uns 400 nomes, eh assim um sistema simples, para secretaria sabe, inves de anotar na agenda, resolvi tentar fazer isso, na tabela do banco eh Nome, Tel Celular, Tel Comercial, Tel Residencial e E-mail, soh isso possui

mas voce entendeu a parte de digitando ir filtrando os nome neh?

ai vai aumentando essa lista de acordo com os telefones entendeu, mas acredito q não passe da 400

criador

Bom dia.

Tenho um exemplo desta funcionalidade usando ComboBox.
Mas na realidade seria feito da mesma forma para uma tabela.

Segue o código:

import			java.awt.event.KeyEvent;
import			java.awt.event.KeyListener;
import			java.util.ArrayList;

import			javax.swing.DefaultComboBoxModel;
import			javax.swing.JComboBox;
import			javax.swing.JDialog;
import			javax.swing.JTextField;

public class		CampoDinamico
	extends		JDialog
{
	private			JTextField
	io_tf_campo1,
	io_tf_campo2,
	io_tf_campo3;
	
	private			JComboBox
	io_cb_lista;
	
	private			String[]
	is_lista		=	{"Rodrigo","Leandro","Murilo","Ramon","Júnior","Jean","Bruna","Bruno"};
	
	public			CampoDinamico()
	{
		setLayout(null);
		setLocationRelativeTo(null);
		setSize(200,300);
		WindowGUI();
	}
	
	private
	void			WindowGUI()
	{
		io_tf_campo1		=	new JTextField();
		io_tf_campo1.setBounds(10,10,100,25);
		io_tf_campo1.addKeyListener(io_kl_campos);
		getContentPane().add(io_tf_campo1);
		
		io_tf_campo2		=	new JTextField();
		io_tf_campo2.setBounds(10,40,100,25);
		io_tf_campo2.addKeyListener(io_kl_campos);
		getContentPane().add(io_tf_campo2);
		
		io_tf_campo3		=	new JTextField();
		io_tf_campo3.setBounds(10,70,100,25);
		io_tf_campo3.setEditable(false);
		getContentPane().add(io_tf_campo3);
		
		io_cb_lista		=	new JComboBox(is_lista);
		io_cb_lista.setBounds(10,100,100,25);
		getContentPane().add(io_cb_lista);
	}
	
	KeyListener
	io_kl_campos		=	new KeyListener()
	{
		@Override
		public void keyPressed(KeyEvent e)
		{
			new Thread()
			{
				@Override
				public
				void			run()
				{
					while	(
							!isInterrupted()
						)
					{
						if	(
								!io_tf_campo1.getText().isEmpty()
							)
						{
							ArrayList<String>
							ls_nova_lista		=	new ArrayList<String>();
							
							for	(
									int
									ln			=	0
									;
									ln			<	is_lista.length
									;
									ln++
								)
							{
								if	(
										is_lista[ln].toLowerCase().startsWith(io_tf_campo1.getText().toLowerCase())
									)
								{
									ls_nova_lista.add(is_lista[ln]);
								}
							}
							
							io_cb_lista.setModel(new DefaultComboBoxModel(ls_nova_lista.toArray()));
						}
						
						interrupt();
					}
				}
			}.start();
		}

		@Override
		public void keyReleased(KeyEvent e)
		{
			
		}

		@Override
		public void keyTyped(KeyEvent e)
		{
			
		}
	};
	
	public static void main(String[] args)
	{
		JDialog.setDefaultLookAndFeelDecorated(true);
		new CampoDinamico().setVisible(true);
	}
}

Porém com uma lista com 400 nomes como você falou, talvez esta não fosse a melhor saída.
Mas dê uma olhada e tire o que você acha que será produtivo para você.

Abraço!

C

olha me deram uma ideia, para pega o q esta digitando, olhem o codigo

public ConsultaDinamica(){

super(Consulta Dinâmica);

c = getContentPane();

c.setLayout(null);
jtfDigite = new JTextField();
	jtfDigite.setBounds(10, 10, 200, 20);
	jtfDigite.addKeyListener(this);
	c.add(jtfDigite);
	
	jlResultado = new JLabel();
	jlResultado.setBounds(10, 30, 200, 20);
	c.add(jlResultado);
	
	setBounds(0, 0, 290, 90);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setVisible(true);
}

public static void main(String[] args){
	new ConsultaDinamica();
}

public void keyTyped(KeyEvent ke){}

public void keyPressed(KeyEvent ke){}

public void keyReleased(KeyEvent ke){
	jlResultado.setText(jtfDigite.getText());
}

eu consigo jogar o q to digitano num jlabel.

agora problema eh q nuam consigo fazer atualizar minha tabela.
eu pega o campo do texto e joguei na query para dps jogar no DefaultTableModel para atualizar a tabela não sei se estou fazendo errado, alguem poder me ajudar agradeço

public void keyReleased(KeyEvent ke){		

String query = SELECT * FROM telefones WHERE telefones.nome LIKE  '%+ jtfNome.getText() +"%’ ORDER BY telefones.nome";

jtTabela = new JTable((TableModel)tabelaTelefones(query));

jsp = new JScrollPane(jtTabela, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

}
renamed

CuRu10:
é o seguinte,

tem um jtextfield onde eu digito o nome, para procurar na lista.

na tela tbm, tenho um jtable onde fica a lista telefonica, q vem do banco de dados

eu gostaria se tivesse como, na hora q tivesse digitando já fosse filtrando os nomes. parece simples, mas para min eh complicado, sei q tem como, se alguem puder me ajudar.

não sei se entendi bem, mas vc ja avaliou de colocar um combobox ou uma listbox com todos os nomes? Assim, você só faria uma consulta qnd a tela abrisse e não uma cada vez que o cara digitasse uma tecla…

C

veja a imagem ai

ai vcs vao entender o q estou fazendo.

ai qdo ele estiver digitando um nome jah vai pega os nomes q estao com akelas palavras.

se alguem entendeu e souber pode me ajudar.

lina

Oi,

Olhe a dica do usuário Criador. Parece estar correta para isso que você quer.

Tchauzin!

71C4700

Se voce quer filtra os dados de uma lista ou tabela, da uma olha nos listerns e filters do JTextField…

Att…

Criado 29 de setembro de 2009
Ultima resposta 6 de out. de 2009
Respostas 10
Participantes 7