Método localizar registro numa JTable

5 respostas
B

Galera,

Estou usando o seguinte método para localizar e selecionar um registro de uma tabela, porém não está funfando!!!

public void localizar(String texto) { int tamanho = texto.length(); for (int linha = 0; linha < jXTableAgentes.getRowCount(); linha++) { String tabela = (String)jXTableAgentes.getValueAt(linha, 1); if (tabela.substring(0,tamanho).equals(texto)) { jXTableAgentes.setRowSelectionInterval(linha, linha); } else { JOptionPane.showMessageDialog(null, "Texto não localizado.", "SCDS", JOptionPane.INFORMATION_MESSAGE); } } }

Desde já agradeço a ajuda! Valeu! :wink:

5 Respostas

RaulCarlin

Usa o contains():

//...
 if (tabela.contains(texto))
//...
B

Eu já tinha até tentado usar o contains, mas também não dá certo não!!!

Mas valeu pela ajuda.

Marky.Vasconcelos

se viu se a palavra tabela está vindo certa?

lina

Oi,
eu fiz um código aqui que pode ajudar...

//
// Faz um for para percorrer a tabela.
//
for	(
		int 
		i			= 	0
		;
		i			<	io_tb_pesquisar.getModel().getRowCount()
		;
		i++
	)
{
	
	//
	// Verifica se o conteudo do textfield (no meu caso é a var = io_tf_nome) existe na tabela.
	//	
	if	(
			io_tf_nome.getText().trim().toUpperCase().equals(io_tb_pesquisar.getValueAt(i,0).toString())
		)
	{
		//
		// Seleciona e pinta a linha escolhida.
		//
		io_tb_pesquisar.setSelectedCell(i,0);
					
		//
		// Habilita o ScrollPane automático para a tabela. (Vai fazer ir na linha automaticamente)
		//
		scrollToVisible(io_tb_pesquisar, io_tb_pesquisar.getSelectedRow(), 0);
				
		//
		// Repinta a tabela.
		//										
		io_tb_pesquisar.repaint();
				
		//
		// Para a aplicação.
		//
		break;
	}
}

Tchauzin!

B

Galera,

Muito obrigado pela ajuda, mas seguinte: consegui fazer esse meu código funcionar, porém ele só funciona se eu colocar um textfiel com um evento KeyReleased no mesmo formulario que contem a tabela.

private void jTextFieldLocalizarKeyReleased(java.awt.event.KeyEvent evt)                                                
    {                                                    
        form.localizaAgente(jTextFieldLocalizar.getText());
    }

Porém, o que eu preciso é quando o usuário clicar no botao localizar, abrir um jDialog com um textfield. Porém dessa forma não dá certo de modo algum. Vejam o código do jDialog:

private void localizar(java.awt.event.ActionEvent evt)                           
    {                               
        if (jTextFieldLocalizar.getText().equals("") || jTextFieldLocalizar == null)
            JOptionPane.showMessageDialog(null, "Digite o texto a ser localizado.", "Gerência de CallCenter", JOptionPane.INFORMATION_MESSAGE);
        else
        {
            Cursor cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR); 
            setCursor(cursor);
            AgenteFilaForm form = new AgenteFilaForm();
            form.localizaAgente(jTextFieldLocalizar.getText());                    
            cursor = Cursor.getDefaultCursor();   
            setCursor(cursor);
            this.setVisible(false);
        }        
    }

O que pode ser?

Criado 8 de agosto de 2007
Ultima resposta 9 de ago. de 2007
Respostas 5
Participantes 4