Busca "onthefly"

10 respostas
thiagofacanha

Opa pessoal. Estou fazendo uma agenda com acesso a banco de dados oracle. usando o Netbeans usei a opção de criar aplicativo da aea de trabalho e relacionado com banco de dados… com isso ele cria um frame com 2 areas principais… uma tabela com todos os registros em cima, e os campos em baixo para inserção/atualização de registros.
Com isso já consegui Inserir , Deletar e Atualizar. Criei um campo lá em cima da tela e um botão localizar… Criei a ação search dele(“nao faz nada ainda”). O que eu gostaria de saber é…Tem como minha pesquisa interferir no frame de cima? para que ele só mostre o que eu estou pesquisando? e também com busca “onthefly” ? O usuário vai digitando e ele já vai restringindo os registros que aparecem de acordo com o que foi digitado…
Vlw pessoal!!

10 Respostas

Marky.Vasconcelos

Eu não sei como voce ta mostrando seus dados, mas eu postei uma tabela que tem isso de procurar de acordo com o que está sendo digitado.

http://www.guj.com.br/posts/preList/105457/571022.java#571022

PS: Se for algo assim que voce quer fala que eu te digo como usar o RowSorter e o RowFilter

thiagofacanha

Opa Vlw cara vou tentar implementar aki.
Muito Obrigado.
=D

thiagofacanha

Só uma dúvida pessoal…No meu arquivo de configurações da view do aplicativo tem umas configurações que eu preciso usar
query.query
e jTextField1

no query.query como faço para que fique com o seguinte significado
query.query=SELECT c FROM CgsAgenda c where c.nome like ‘%jTextField1.getText()%’ order by c.nome

preciso pegar o valor… mas assim não funciona… alguem tem ideia de como pego o valor do campo?

correainfo

thiagofacanha:
Só uma dúvida pessoal…No meu arquivo de configurações da view do aplicativo tem umas configurações que eu preciso usar
query.query
e jTextField1

no query.query como faço para que fique com o seguinte significado
query.query=SELECT c FROM CgsAgenda c where c.nome like ‘%jTextField1.getText()%’ order by c.nome

preciso pegar o valor… mas assim não funciona… alguem tem ideia de como pego o valor do campo?

Coloque assim…

query.query = "SELECT c From CgsAgenda c where c.nome like '%"+ jTextField1.getText() + "%' order by c.nome";

ahh POR FAVOR nao duplique post
http://www.guj.com.br/posts/list/106918.java

thiagofacanha

Testei mas não deu… tipo é um arquivo de conf tipo aquele do struts… ai ele não entende o jTextField1.getText() como um valor… ele ler isso tudo como String.
Fiz um teste colocando um registro com nome = "+ jTextField1.getText() + " ai apareecu…
ou seja… realmente ele ver como String deste modo.

thiagofacanha

Ahh foi mal por ter duplicado… vou deixar neste aki a img. Como faço para deletar o outro?

Marky.Vasconcelos

Para criar uma tabela como aquela:
(Simplificado)
Tentei explicar tudo, mas se ainda tiver duvidas pergunte.

table = new JTable(model);//Cria a tabela com o seu model
//No meu caso eu uso o ObjectTableModel que é um model que eu mesmo fiz.
rowSorter = new TableRowSorter<DefaultTableModel>(model);//Aqui criamos o TableRowSorter para o model
//Evite usar o DefaultTableModel crie o seu proprio se estiver usando.
table.setRowSorter(rowSorter);//Colocamos o sorter na nossa tabela
JTextField filterText = new JTextField(30);//TextField para filtrar os resultados
filterText.getDocument().addDocumentListener(new DocumentListener() {
//Para que todos os eventos no textfield filtrem a tabela
public void changedUpdate(DocumentEvent e) {
 filter(filterText.getText());
}
public void insertUpdate(DocumentEvent e) {
 filter(filterText.getText());
}
public void removeUpdate(DocumentEvent e) {
 filter(filterText.getText());			
}
//método para filtrar
private void filter(String text) {
		RowFilter<DefaultTableModel, Object> rf = null;
		try {
			rf = RowFilter.regexFilter("(?i)" + text, 1);// o segundo argumento é o indice da coluna
		} catch (java.util.regex.PatternSyntaxException e) {
			e.printStackTrace();
			return;
		}
		rowSorter.setRowFilter(rf);
	}
});
Marky.Vasconcelos

Jar com a classe modificada

Eu mudei algumas coisas… pois do modo que estava só era possivel abrir naquela janelinha que abre.

Agora com o método getContent voce consegue um Container para adicionar em qualquer lugar a tabela sem precisar de outra tela.

e o método showSelectTable agora recebe uma String que será o titulo do Frame.

Se alguém quiser usar e não entender, pergunte aqui.

Marky.Vasconcelos

Ai estão os sources pra quem quiser e com algumas alterações…
agora a tabela tem paginação também mas com algumas limitações e que se alguem conseguir arrumar eu gostaria que compartilhasse também…

No momento ele pagina… mas se buscar no campo de cima tem que apertar o botao para mudar de pagina até achar uma página que tinha um resultado que combinasse com a procura…

Eu acho que a solução é após procurar pegar a lista filtrada do RowFilter e pagina-la denovo…
mas o problema que não achei um método que retorne a lista que esta aparecendo no momento.

Marky.Vasconcelos

Ahh… nunca aprendi a fazer bons JavaDocs… então o código está sem ennhum comentario… vou tentar fazer algo sobre isso depois posto novamente…

Criado 17 de outubro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 10
Participantes 3