Atualizar JTable em outra Página e utilizar o dispose();

0 respostas
FabioNoth

Ola pessoal, talvez isso seja meio simples para vocês desenvolvedores. Mais estou tendo grandes dificuldades em resolver isso.

Sei que o código é grande, qualquer dúvida estou a disposição para explicar melhor!

Tenho dois problemas em uma aplicação que estou iniciando.

Uma delas é atualizar um JTable que fica no Panel de Pacientes;

E o outro é fechar um JDialog e/ou JFrame que fica aberto mesmo de pois de utilizar setVisible(false) e dispose();

Vou colocar o código aqui para ser analizado por vocês.
Dialog de Cadastro de Pacientes:

package br.com.anglo.Clinica.view;


public class CadPaciente extends JDialog{
	private static final long serialVersionUID = 1L;
	SimpleDateFormat formatBra = new SimpleDateFormat("dd/MM/yyyy");  
	JDialog frmPacientes;
	private JTextField tFId;
	private JTextField tFNome;
	private JTextField tFTelefone;
	private JTextField tFEndereco;
	private JTextField tFBairro;
	private JTextField tFCidade;
	private JLabel lblNacionalidade;
	private JTextField tFNacionalidade;
	private JLabel lblDataDoCadastro;
	private JTextField tFDataCadastro;
	private JLabel lblDataDeNascimento;
	private JTextField tFDataDeNascimento;
	private JTextField tFCelular;
	private JTextField tFRG;
	private JTextField tFCPF;
	private JTextField tFEmail;
	private JTextField tFProfissao;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	private JRadioButton rdbtnEmAtendimento;
	private JRadioButton rdbtnEmAlta;
	private JSeparator separator_1;
	private JLabel lblUsurioReponsvel;
	private JTextField tFUsuario;
	private JLabel lblNewLabel_3;
	private JTextField tFEstagiario;
	private Paciente p;
	private JButton btnImprimir;
	private String acao;
	
	public CadPaciente() {
		initialize();
	}

	public CadPaciente(String acao, Paciente p) {
		this.acao = acao;
		this.p = p;
		if(acao == null){
			return;
		}else{
			initialize();
			if(acao == "novo"){
				return;
			}
			if(acao == "abrir"){
				abrir();
			}
			if(acao == "editar"){
				editar();
			}
		}
	}

	
	private void initialize() {
		frmPacientes = new JDialog();
		frmPacientes.setTitle("Cadastro Paciente");
		frmPacientes.setBounds(100, 100, 450, 300);
		frmPacientes.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


		/*
*Declaração de Parâmetros e Componentes
*		
*/
		JButton btnSalvar = new JButton("Salvar");
		btnSalvar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				salvar();
				dispose();
			}
		});
		btnSalvar.setBounds(285, 489, 89, 23);
		frmPacientes.getContentPane().add(btnSalvar);
		
		JButton btnLimpar = new JButton("Limpar");
		btnLimpar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpar();
			}
		});
		btnLimpar.setBounds(195, 489, 89, 23);
		frmPacientes.getContentPane().add(btnLimpar);
		
		btnImprimir = new JButton("Imprimir");
		btnImprimir.setBounds(10, 489, 89, 23);
		frmPacientes.getContentPane().add(btnImprimir);
	}
	
	private void salvar() {
		Paciente p = new Paciente();
		if(tFNome.getText().isEmpty() || tFNome.getText() == ""){
			JOptionPane.showMessageDialog(null,
					"Informe um Nome", "Erro",
					JOptionPane.ERROR_MESSAGE);
		}else if(acao == "novo"){
			p.setNome(tFNome.getText());
			p.setEndereco((tFEndereco.getText()));
			p.setBairro(tFBairro.getText());
			p.setCidade(tFCidade.getText());
			p.setNacionalidade(tFNacionalidade.getText());
			p.setProfissão(tFProfissao.getText());
			p.setRg(tFRG.getText());
			p.setCpf(tFCPF.getText());
			p.setTelefone(tFTelefone.getText());
			p.setCelular(tFCelular.getText());
			p.setEmail(tFEmail.getText());
			PacienteService service = new PacienteService();
			service.adicionarPaciente(p);

                        //Aqui deveria ficar o método de atualizar a JTable da JPanel de Pacientes
			//Aqui deveria ficar o dispose():


			
		}
		
	}
	public void limpar(){
	//Metodo Editar
	}
	
	private void editar() {
//Metodo Editar
	}
	private void abrir() {
		//Metodo Abrir
	}
}

Panel que possui A JTable ser Atualizada

package br.com.anglo.Clinica.view;

import java.awt.EventQueue;

public class PanelPacientes extends JPanel {

	private static final long serialVersionUID = 1L;
	private JTextField textField;
	public JTable table;
	private JScrollPane scrollPane;
	PacienteService service = new PacienteService();



	public PanelPacientes() {
		setBorder(new TitledBorder(null, "Pacientes", TitledBorder.LEADING,
				TitledBorder.TOP, null, null));
		setLayout(null);
		setVisible(true);
		setSize(600, 400);
//Aqui é o Código do JTABLE

		scrollPane = new JScrollPane(getTablePaciente());
		scrollPane.setBounds(10, 51, 580, 306);
		add(scrollPane);

//Final do Código
		textField = new JTextField();
/*
*Atribuições a Botões e TextFields
*
*/


	}

	private void abrir() {
		
		// TODO Auto-generated method stub
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					int index = table.getSelectedRow();
					if (index == -1) {
						JOptionPane.showMessageDialog(null,
								"Selecione um paciente na Tabela", "Erro",
								JOptionPane.ERROR_MESSAGE);
					} else {
						CadPaciente window = new CadPaciente("abrir",
								new PacienteTableModel(service
										.getAllPacientes()).getPaciente(index));
						window.frmPacientes.setVisible(true);
					}

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});

	}

	public void novo() {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CadPaciente window = new CadPaciente("novo", null);
					window.frmPacientes.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	private void editar() {
		// TODO Auto-generated method stub
		try {
			int index = table.getSelectedRow();
			if (index == -1) {
				JOptionPane.showMessageDialog(null,
						"Selecione um paciente na Tabela", "Erro",
						JOptionPane.ERROR_MESSAGE);
			} else {
				CadPaciente window = new CadPaciente("editar",
						new PacienteTableModel(service
								.getAllPacientes()).getPaciente(index));
				window.frmPacientes.setVisible(true);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public void excluir(){
		try {
			int index = table.getSelectedRow();
			if (index == -1) {
				JOptionPane.showMessageDialog(null,
						"Selecione um paciente na Tabela", "Erro",
						JOptionPane.ERROR_MESSAGE);
			} else {
				int resposta = JOptionPane.showConfirmDialog(null, "Deseja completar essa operação?", "Confirmar Operação?", JOptionPane.WARNING_MESSAGE);
				if(resposta == JOptionPane.OK_OPTION){	
					service.deletePaciente(new PacienteTableModel(service.getAllPacientes()).getPaciente(index));
					table.setModel(new PacienteTableModel(service.getAllPacientes()));
				}
				else{
					return;
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private JTable getTablePaciente() {
		if (table == null) {
			table = new JTable();
			table.setModel(new PacienteTableModel(service.getAllPacientes()));
		}
		return table;
	}
	public JTable getTable() {
		return table;
	}

	public void setTable(JTable table) {
		this.table = table;
	}
}

obs. Só para Constar, eu criei um Novo TableModel para ser utilizado;

Desde já agradeço a atenção de todos!

Criado 15 de novembro de 2011
Respostas 0
Participantes 1