[Resolvido] ajuda pra criar classe que pega objeto em tabela

4 respostas
ingoguilherme

tenho uma classe que é AgendarConsulta

e uma que é SelecionaFuncionario

O que eu quero é o seguinte, ao clicar no botão de “Busca” do funcionário ele abra a janela/classe “SelecionaFuncionario” e nela seleciono o funcionário que desejo e aperto em “Selecionar”. Ao clicar em “Selecionar”, quero que ele mande o objeto funcionário, não só o nome dele, que está na tabela de volta pro metodo “AgendarConsulta”. Então no TextField do funcionário irá aparecer somente o nome, mas eu terei o objeto funcionário para pegar outros dados, quais o usuário não me verá fazendo.

É isto que não estou conseguindo, não sei como chamar a classe/janela “SelecionaFuncionário” fazendo com que ela retorne o objeto funcionário selecionado.

Observações:
Quero mandar o objeto inteiro de volta para a class AgendarConsulta porque adiciono também alguns dados quais não irão aparecer na tabela, estão implicitos.
Estou utlizando InternalFrame, abro cada janela/classe dentro da ClassePrincipal que é JFrame

4 Respostas

F

Amigo não sei que api vc esta utilizando pra gerar essa grid onde aparece esse seu List de funcionarios… mas dê uma olhada nessa api que gera a grid pois geralmente possuem metodos pra retornar o index da linha selecionada e com esse index vc pode obter o objeto diteratamente na sua List de funcionarios, e atreves de um metodo get vc pode pegar o objeto na tela de agendar consulta…

espero ter ajudado

ingoguilherme

nao entendi direito o que voce falou, ainda sou muito leigo em java

estou usando o jdbc

codigo do "SelecionaFuncionarios"
package View;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

import Control.CRUDCliente;
import Control.CRUDConsultas;
import Control.CRUDFuncionario;
import Control.Formata;
import Model.Consultas;
import Model.Funcionarios;

public class SelecionaFuncionario extends JInternalFrame implements ActionListener{
	JTable tabela;
	DefaultTableModel modelo;
	JScrollPane painel;
	JPanel pnSuperior,pnConteudo,pnInferior;
    JLabel titulo;
    Container c;
    
    JButton btSelecionar, btFechar;
    
	public SelecionaFuncionario(){
		super("Gerenciar Funcionário");
		setSize(700,310);
   	 	setClosable(true);
   	 	
   	 	titulo = new JLabel("Selecione o funcionário que deseja e em seguida uma das opções abaixo");
		btSelecionar = new JButton("Selecionar");
		btFechar = new JButton("Fechar");
   	 	
   	 	pnSuperior = new JPanel();
   	 	pnConteudo = new JPanel();
	 	pnInferior = new JPanel();
	 
	 	modelo = new DefaultTableModel(){  
            public boolean isCellEditable(int rowIndex, int mColIndex) {  
                return false;  
            }  
        };
        modelo.addColumn("ID");
		modelo.addColumn("Nome Funcionário");
		modelo.addColumn("Data de Nascimento");
		modelo.addColumn("Status");
		modelo.addColumn("Cargo");
		
		try {
			
			ResultSet rsFun = CRUDFuncionario.buscaFuncionarios();
			while(rsFun.next()){
				Funcionarios fun = new Funcionarios();

				fun.setId(rsFun.getInt("id"));
				fun.setNome(rsFun.getString("nome"));
				fun.setRg(rsFun.getString("rg"));
				fun.setCpf(rsFun.getString("cpf"));
				fun.setData_admissao(rsFun.getString("data_admissao"));
				fun.setData_demissao(rsFun.getString("data_demissao"));
				fun.setSexo(rsFun.getString("sexo"));
				fun.setEndereco(rsFun.getString("endereco"));
				fun.setNum_carteira_trab(rsFun.getString("num_carteira_trab"));
				fun.setFone(rsFun.getString("fone"));
				fun.setData_nascimento(rsFun.getString("data_nascimento"));
				fun.setStatus(rsFun.getInt("status"));
				fun.setId_cargo(rsFun.getInt("id_cargo"));
				
				String data_nascimento = Formata.formatDateSQL(fun.getData_nascimento());
				String status = Formata.buscaStatusOutros(fun.getStatus());
				
				modelo.addRow(new Object[]{fun.getId(),fun.getNome(),data_nascimento,status,fun.getId_cargo()});
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
		
		tabela=new JTable(modelo);
		painel = new JScrollPane(tabela);
		
		tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		tabela.getColumnModel().getColumn(0).setPreferredWidth(30);
		tabela.getColumnModel().getColumn(1).setPreferredWidth(300); 
		tabela.getColumnModel().getColumn(2).setPreferredWidth(150); 
		tabela.getColumnModel().getColumn(3).setPreferredWidth(100);
		tabela.getColumnModel().getColumn(4).setPreferredWidth(150);
		painel.setHorizontalScrollBar(new JScrollBar(0));
		
		tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		btSelecionar.addActionListener(this);
		btFechar.addActionListener(this);
		
		pnConteudo.setBackground(Color.white);
		pnConteudo.setLayout(new GridLayout(1,1)); 
		c = getContentPane();
		 
		c.setLayout(null);
		
		pnSuperior.setBounds(0,0,690,30);
		pnConteudo.setBounds(0,30,690,200);
		pnInferior.setBounds(0,235,690,40);
		 
		pnSuperior.add(titulo);
		pnInferior.add(btSelecionar);
		pnInferior.add(btFechar);
		
		pnConteudo.add(painel);
		
		c.add(pnSuperior);
		c.add(pnConteudo);
		c.add(pnInferior);
		 	
	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()== btSelecionar){
			
		}
		if(e.getSource()==btFechar){
			setVisible(false);
			Principal.JdpDesktopPane1.remove(this);
		}
	}
}
Quero algo no listener do botao selecionar que devolva para o o angendar
package View;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.Border;

import Model.Consultas;

public class AgendarConsulta extends JInternalFrame implements ActionListener{
	
	JPanel pnSuperior,pnConteudo,pnInferior;
	JLabel titulo;
	Container c;
	
	JButton btAgendar, btCancelar;
	JTextField jtfDataConsulta;
	JTextArea jtaObservacaoConsulta;
	JTextField jtfClientesConsulta, jtfFuncionariosConsulta;
	JLabel jlDataConsulta, jlObservacaoConsulta;
	JLabel jlClientesConsulta, jlFuncionariosConsultas;
	JScrollPane jspObservacaoConsulta;
	JButton btBuscarFuncionarios, btBuscarClientes;
	
	public AgendarConsulta(){
		super("Agendar Consulta");
		setSize(400,275);
   	 	setClosable(true);
   	 	
		titulo = new JLabel("Agendar Consulta");
		btAgendar = new JButton("Agendar");
    	btCancelar = new JButton("Cancelar");
    	
    	btBuscarFuncionarios = new JButton("Buscar");
    	btBuscarClientes= new JButton("Buscar");
    	
    	jtfDataConsulta = new JTextField();
    	jtaObservacaoConsulta = new JTextArea();
    	jspObservacaoConsulta = new JScrollPane(jtaObservacaoConsulta);
    	
    	jtfClientesConsulta = new JTextField();
    	jtfClientesConsulta.setEditable(false);
    	jtfFuncionariosConsulta = new JTextField();
    	jtfFuncionariosConsulta.setEditable(false);
    	
    	jlDataConsulta = new JLabel("Data da Consulta:");
    	jlObservacaoConsulta = new JLabel("Observação:");
    	jlClientesConsulta = new JLabel("Cliente:");
    	jlFuncionariosConsultas = new JLabel("Funcionário:");
    	
    	pnSuperior = new JPanel();
   	 	pnConteudo = new JPanel();
   	 	pnInferior = new JPanel();
    	
    	pnConteudo.setBackground(Color.white);
	 	pnConteudo.setLayout(null);    	 
	 	c = getContentPane();
   	 
   	 	c.setLayout(null);
    	
    	btAgendar.addActionListener(this);
    	btCancelar.addActionListener(this);
    	btBuscarFuncionarios.addActionListener(this);
    	btBuscarClientes.addActionListener(this);
    	 	
    	jtfDataConsulta.setBounds(110,5,275,25);
     	//jtaObservacaoConsulta.setBounds(110,95,275,75);
    	jtfClientesConsulta.setBounds(110,35,190,25);
    	jtfFuncionariosConsulta.setBounds(110,65,190,25);  	
    	jspObservacaoConsulta.setBounds(110,95,275,75);
    	jspObservacaoConsulta.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
    	jtaObservacaoConsulta.setLineWrap(true);
    	
    	btBuscarFuncionarios.setBounds(305,65,80,25);
    	btBuscarClientes.setBounds(305,35,80,25);
    	
    	jlDataConsulta.setBounds(5,5,105,25);
    	jlObservacaoConsulta.setBounds(5,100,105,25);
    	jlClientesConsulta.setBounds(5,35,105,25);
    	jlFuncionariosConsultas.setBounds(5,65,105,25);
    	
    	pnSuperior.setBounds(0,0,400,30);
   	 	pnConteudo.setBounds(0,30,400,175);
   	 	pnInferior.setBounds(0,205,400,40);
    	
    	pnConteudo.add(jtfDataConsulta);
    	pnConteudo.add(jspObservacaoConsulta);
    	//pnConteudo.add(jtaObservacaoConsulta);
    	pnConteudo.add(jtfClientesConsulta);
    	pnConteudo.add(jtfFuncionariosConsulta);
    	pnConteudo.add(jlDataConsulta);
    	pnConteudo.add(jlObservacaoConsulta);
    	pnConteudo.add(jlClientesConsulta);
    	pnConteudo.add(jlFuncionariosConsultas);
    	pnConteudo.add(btBuscarFuncionarios);
    	pnConteudo.add(btBuscarClientes);
    	
		pnSuperior.add(titulo);
		pnInferior.add(btAgendar);
		pnInferior.add(btCancelar);
		
		c.add(pnSuperior);
   	 	c.add(pnConteudo);
   	 	c.add(pnInferior);
	}
	
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()== btAgendar){
			
		}
		if(e.getSource()== btCancelar){
			setVisible(false);
			Principal.JdpDesktopPane1.remove(this);
		}
		if(e.getSource()== btBuscarFuncionarios){
			SelecionaFuncionario selFuncionario = new SelecionaFuncionario();
			Principal.JdpDesktopPane1.add(selFuncionario);
			selFuncionario.setVisible(true);
			
		}
		if(e.getSource()== btBuscarClientes){
			
		}
	}
	
	
}
mauricioadl

na classe AgendaConsulta vc vai fazer um metodo assim:

public void setCliente(Cliente c){

// aqui vc popula os campos que vc quer.

}

na classe
SelecionaFuncionario vc vai passar no construtor dela a classe AgendaConsulta. dae qndo a pessoa clicar em selecionar vc chma o metodo setCliente

entendeu?

ingoguilherme

entendi sim, aprendi isso já, só nao estava me lembrando kkkk

mas enfim cara, acabei de aplicar aqui, deu certo :smiley:

muito obrigado, vc me ajudou muito

Criado 1 de dezembro de 2011
Ultima resposta 1 de dez. de 2011
Respostas 4
Participantes 3