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!!
Busca "onthefly"
10 Respostas
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
Opa Vlw cara vou tentar implementar aki.
Muito Obrigado.
=D
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?
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 jTextField1no 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.nomepreciso 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
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.
Ahh foi mal por ter duplicado… vou deixar neste aki a img. Como faço para deletar o outro?
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);
}
});
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.
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.
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…