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!