Como adicionar valores de JTable em vários JTextField? (AbstractTableModel)

1 resposta
L

Eu preciso adicionar os valores de uma JTable para vários TextFields de uma JDialog.

Como eu faço para passar esses valores?
Eu preciso colocar no construtor?

Meu código da JFrame com o JTable:

import java.io.IOException;
import java.sql.SQLException;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class Main extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	private JPanel painelBotao = new JPanel();
	private JTable tabela = new JTable();
	private JButton botaoIncluir = new JButton("Incluir");
	private JButton botaoDetalhe = new JButton("Detalhes");
	private Container tela = getContentPane();

	public static void main(String[] args) throws SQLException, IOException {
		JFrame tela = new Main();
		tela.setVisible(true);
	}
	Main() throws SQLException {
		super("InfraBridge Config Manager");
		initialize();
	}

	private void initialize() throws SQLException {
		setSize(900, 500);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		tela.setLayout(new BorderLayout());
		tela.add(new JScrollPane(getTabela()), BorderLayout.NORTH);
		tela.add(getPainelBotao(), BorderLayout.SOUTH);
		setResizable(false);
	}

	private JTable getTabela() throws SQLException {
		tabela.setModel(new ModeloTabela());
		return tabela;
	}

	private JButton getBotaoIncluir() {
		botaoIncluir.addActionListener(this);
		return botaoIncluir;
	}

	private JButton getBotaoDetalhe() {
		botaoDetalhe.addActionListener(this);				
		return botaoDetalhe;
	}

	private JPanel getPainelBotao() {
		painelBotao.add(getBotaoIncluir());
		painelBotao.add(getBotaoDetalhe());
		return painelBotao;
	}


	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==botaoIncluir){
			TelaIncluir incluir = new TelaIncluir(this);
			incluir.setVisible(true);
			
		}
		if(e.getSource()==botaoDetalhe){
			TelaAltDel ad = new TelaAltDel(this);
			ad.setVisible(true);
			
		}
	}

}

Meu código do JDialog:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class TelaAltDel extends JDialog {
	private static final long serialVersionUID = 1L;
	
	
	private JPanel painelBotao = new JPanel();
	private JPanel painelTxtLabel = new JPanel(new GridLayout(7,2,5,5));
	private JLabel labelIdComponente = new JLabel("ID Componente");
	private JLabel labelComponente = new JLabel("Componente");
	private JLabel labelServidorOrigem = new JLabel("Servidor de Origem");
	private JLabel labelServidorDestino = new JLabel("Servidor de Destino");
	private JLabel labelAliasComponente = new JLabel("Alias do Componente");
	private JLabel labelOrdem1 = new JLabel("Ordem de Origem");
	private JLabel labelOrdem2 = new JLabel("Ordem de Destino");
	private JTextField txtfIdComponente = new JTextField();
	private JTextField txtfComponente = new JTextField();
	private JTextField txtfServidorOrigem = new JTextField();
	private JTextField txtfServidorDestino = new JTextField();
	private JTextField txtfAliasComponente = new JTextField();
	private JTextField txtfOrdem1 = new JTextField();
	private JTextField txtfOrdem2 = new JTextField();
	private JButton botaoAlterar = new JButton("Alterar");
	private JButton botaoDeletar = new JButton("Deletar");
	private Container tela = getContentPane();

	public TelaAltDel(JFrame parent) {
		super(parent, "InfraBridge Config Manager - Alterar/Deletar", true);
		initialize();
	}

	private void initialize() {
		txtfIdComponente.setEditable(false);
		setSize(350, 300);
		setLocationRelativeTo(null);
		tela.add(getPainelTxtLabel());		
		tela.add(getPainelBotao(), BorderLayout.SOUTH);
		setResizable(false);

	}

	private JButton getBotaoDeletar() {
		 botaoDeletar.addActionListener(new ActionListener() {			 
	            public void actionPerformed(ActionEvent e)
	            {
	                JOptionPane.showMessageDialog(null, "You clicked the button");
	            }
	        });  
		return botaoDeletar;
	}
	private JButton getBotaoAlterar(){		
		return botaoAlterar;
	}
	

	private JPanel getPainelBotao() {
		painelBotao.add(getBotaoDeletar());
		painelBotao.add(getBotaoAlterar());
		return painelBotao;
	}
	
	private JPanel getPainelTxtLabel(){
		painelTxtLabel.add(labelIdComponente);		painelTxtLabel.add(txtfIdComponente);
		painelTxtLabel.add(labelComponente);		painelTxtLabel.add(txtfComponente);
		painelTxtLabel.add(labelServidorOrigem);	painelTxtLabel.add(txtfServidorOrigem);
		painelTxtLabel.add(labelServidorDestino);	painelTxtLabel.add(txtfServidorDestino);
		painelTxtLabel.add(labelAliasComponente);	painelTxtLabel.add(txtfAliasComponente);
		painelTxtLabel.add(labelOrdem1);			painelTxtLabel.add(txtfOrdem1);
		painelTxtLabel.add(labelOrdem2);			painelTxtLabel.add(txtfOrdem2);
		return painelTxtLabel;
	}

}

1 Resposta

L

Pra adicionar também, eu fiz um método pra pegar a linha da tabela mas não funciona de jeito nenhum!!!:

public void actionPerformed(ActionEvent e) {
		if(e.getSource()==botaoIncluir){
			try {
				pegarValorJTable();
			} catch (SQLException e1) {				
				e1.printStackTrace();
			}
			TelaIncluir incluir = new TelaIncluir(this);
			incluir.setVisible(true);

		}
		if(e.getSource()==botaoDetalhe){
			TelaAltDel ad = new TelaAltDel(this);
			ad.setVisible(true);

		}
	}
	public void pegarValorJTable() throws SQLException {
		int linha = tabela.getSelectedRow();  
		if (linha > -1) {  			 
			for (int i = 0; i < 7; i++) {  
				switch (i) {  
				case 0:  
					//DAO.infraBridge.setidComponente(Integer.parseInt((String)tabela.getValueAt(linha, i)));  
					break;  
				case 1:
					DAO.infraBridge.setComponente((String)tabela.getValueAt(linha, i));
					break;  
				case 2:
					DAO.infraBridge.setServidorOrigem((String)tabela.getValueAt(linha, i));
					break;  
				case 3:
					DAO.infraBridge.setServidorOrigem((String)tabela.getValueAt(linha, i));
					break;  
				case 4:
					DAO.infraBridge.setAliasComponente((String)tabela.getValueAt(linha, i));
					break;  
				case 5:  
					//DAO.infraBridge.setOrdem1(Integer.parseInt((String) tabela.getValueAt(linha, i)));
					break;  
				case 6:  
					//DAO.infraBridge.setOrdem2(Integer.parseInt((String) tabela.getValueAt(linha, i)));
					break;                    
				}  
			}  
		}  
	}
Criado 28 de maio de 2013
Ultima resposta 29 de mai. de 2013
Respostas 1
Participantes 1