Transferir dados da jtble para jtextfields

4 respostas
P_ulo_Jos

pessoal como faço para quando eu selecionar uma linha da minha jtable os dados contidos nas colunas entrem
na jtextfields

ex:
uma linha que tenha as colunas nome, endereço, telefone
quando eu clicar essa linha

as minhas jtextfields (nome, endereço e tel) sejam preenchidas com os mesmo dados das colunas desta linha.

4 Respostas

InSeOfKn

Olha, você pode usar o método getSelectedRow() da Class JTable para saber a linha selecionada com isso usar o método getValueAt do seu modelo para retornar os valores que você quer colocar do seus JTextFields

até

P_ulo_Jos

certo… mas daria para por um exemplo para que eu possa visualizar melhor

InSeOfKn

Ok, vou montar um e já retorno

InSeOfKn

uffa, demorou mas ta ai

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;


public class JTableLinhaEmJTextField extends JFrame{

	private JTable tbl;
	private JPanel panel;
	private JTextField campoNome;
	private JTextField campoTell;

	public JTableLinhaEmJTextField(){
		inicializa();
	}

	public void inicializa(){
		this.setSize(400,400);
		this.add(getTbl());
		this.add(getPainelJTextFild(), BorderLayout.SOUTH);
		this.setVisible(true);
	}

	public JTable getTbl() {
		if(tbl==null){
			tbl = new JTable();
			tbl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
			tbl.setModel(new DefaultTableModel(getConteudo(),new String[]{"nome","Telefone"}));
			tbl.addMouseListener(new MouseListener() {
				@Override
				public void mouseReleased(MouseEvent arg0) {}
				
				@Override
				public void mousePressed(MouseEvent arg0) {}
				
				@Override
				public void mouseExited(MouseEvent arg0) {}
				
				@Override
				public void mouseEntered(MouseEvent arg0) {}
				
				@Override
				public void mouseClicked(MouseEvent arg0) {
					int linhaSelecionada = getTbl().getSelectedRow(); //pega a linha
					String nome = getTbl().getModel().getValueAt(linhaSelecionada, 0).toString(); // pega o conteúdo da primeira coluna (nome)
					String telefone = getTbl().getModel().getValueAt(linhaSelecionada, 1).toString(); // pega o conteúdo da segunda coluna (telefone)
					getCampoNome().setText(nome); // seta o nome
					getCampoTell().setText(telefone); //  seta o telefone
				}
			});
		}
		return tbl;
	}
	public String[][] getConteudo(){
		String[][] conteudo = new String[4][2];
		conteudo[0]= new String[]{"Mateus","99884455"};
		conteudo[1]= new String[]{"Marcos","99883344"};
		conteudo[2]= new String[]{"Victor","99882233"};
		conteudo[3]= new String[]{"Junior","99881122"};
		return conteudo;
	}

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

	public JPanel getPainelJTextFild(){
		if(panel==null){
			panel = new JPanel();
			panel.add(getCampoNome());
			panel.add(getCampoTell());
		}
		return panel;
	}
	
	public JTextField getCampoNome(){
		if(campoNome==null){
			campoNome = new JTextField();
			campoNome.setPreferredSize(new Dimension(100, 20));
		}
		return campoNome;
	}
	
	public JTextField getCampoTell(){
		if(campoTell==null){
			campoTell = new JTextField();
			campoTell.setPreferredSize(new Dimension(100, 20));
		}
		return campoTell;
	}
}

ta bem grande o código mas a parte que interessa é a parte comentada que como você pode ver não é muito complicada

até

ahh e mais uma coisa eu usei DefaultTableModel porque se tratava de uma exemplo mas eu recomento que crie o seu próprio Modelo que vai te poupar de muita dor de cabeça

Criado 5 de janeiro de 2011
Ultima resposta 5 de jan. de 2011
Respostas 4
Participantes 2