Procura

Bom dia!!!
Criei uma JTable…
Fora da tabela, criei um botão Pesquisar…
Ao colocar o nome no TEXTFIELD “NOME”, e apertar em Pesquisar, ele pinta a linha no qual está este nome que eu digitei…
Agora queria saber como eu faço para:

  • Se eu digitar meia palavra no TEXTFIELD “NOME” (EX: Tabel (No caso seria a palavra Tabela)), ele reconhecer a palavra quando eu apertar no botão pesquisar. Quero que o usuário não precise digitar toda a palavra…digitando metade dela, já reconhecer a palavra! Entenderam??

Se poderem me ajudar ficarei grato!
Abraços :wink:

Você deve estar utilizando o método equals, ou o equalsIgnoreCase para comparar o que a pessoa digita com o conteúdo da tabela não é? Então para fazer o que vc quer, é só utilizar o método contains:

if("Juliano".contains("Ju"))
	System.out.println("OK!");

Flw! :mrgreen:

Sim…estou usando equals!!!
Mas o problema, eh que nao eh soh um nome!!!
São varios nomes…
Como vou tratar esses varios nomes dentro do contains???

Como assim são vários nomes? Tipo um por cada linha da tabela, ou muitos numa só linha? Independente disso, vc tem que ir varrendo a tabela e verificando todos os valores e no caso pintando as linhas encontradas.

Não entendi direito qual é a dificuldade :XD: Pode dar mais uns detalhes? Flw!

Não não…
Cada linha tem um nome!!!
Quero que o usuario nao precise completar toda a palavra para o programa achar!
Digitando meia palavra e apertando no botão pesquisar, ele já reconheça a palavra e pinte a linha que se encontra essa palavra!!

tipo… dica… só tenho a lógica na cabeça…

e se vc utilizar o substring de 0 ao variavel.length e depois usa o equals para comparar com a tabela… tipo

x= y.substring(0,y.length);
depois

x.equals(x);

ai acho q ele pega o conteudo de x e usa o equals para comparar…

nunca testei sou novo… mas a lógica acho q ia dar certo.

Entao, é só fazer um loop q passa por todas as linha da tabela, aí vc faz um

String item = ""; for(int linha=0; linha < tabela.getModel().getRowCont(); linha++) { item = tabela.getModel().getValueAt(linha, colunaDosNomes); if(item.contains(txtField.getText())) pintaLinha(linha); }
Acho que é só isso! Vc vai verificando linha por linha se nela contém o texto digitado no txtField. Blz!

Juliano…Não funcionou seu código!
na linha item = tabela.getModel().getValueAt(linha, colunaDosNomes);, é necessário fazer um cast de string!
O contains não funciona quando é String!

Mas valeu mesmo assim!! Se tiveres outra sugestão, será bem vinda!

Como assim não funciona?
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#contains(java.lang.CharSequence)