2012-03-18 13 views
1

Im создает небольшое программное обеспечение для управления пациентами для моей жены. Программа полностью работоспособна, но у меня возникает проблема, когда я обновляю данные пациента или исключаю какой-либо регистр. У меня есть форма поиска для всех пациентов (с использованием даты, имени ...), затем я выбираю желаемого пациента (с последнего посещения), и все данные пациента отображаются в другой форме. Я могу обновлять данные, исключая этот визит, но, как только я его сохраню, эта форма (secundary) закрыта (dispose). Но основная форма (форма поиска) содержит предыдущие значения. Как сделать, чтобы обновить основную форму после закрытия секретной формы ??? ТНХ многоОбновление основной формы после закрытия вторичной формы

Отредактировано: Забыл сказать свое Java - СРЮ;)

Edited2: это метод Im, используя для вызова формы вторичной. Я использовал Netbeans для создания проекта.

private void btn_selecionaActionPerformed(java.awt.event.ActionEvent evt) {            
     try{ 
     int sel = tabela.getSelectedRow(); 

     if (sel != -1){ 
      String sql = "select * from agendados " 
        + "where numag = " + modelo.getValueAt(sel, 5); 
      con_mnt.executaSQL(sql); 
      func = new Funcoes(); 
      func.carregaDados(dados, con_mnt.rs); 
      new CarregarAgendamento(func.getDados()).setVisible(true); 

     } else{ 
      JOptionPane.showMessageDialog(null, "Selecione algum paciente antes.", " Atenção!!!", JOptionPane.ERROR_MESSAGE); 
     } 

     } 
     catch(SQLException | NumberFormatException e){ 
      JOptionPane.showMessageDialog(null, "Nao existe dados ainda", " Atenção!!!", JOptionPane.ERROR_MESSAGE); 
     } 
    } 

Edited 3: Сохранить, Удалить и salvarAgendamento методы:

private void btn_salvaActionPerformed(java.awt.event.ActionEvent evt) {           
    salvarAgendamento(); 
    dispose(); 
}           

private void btn_deleteActionPerformed(java.awt.event.ActionEvent evt) {           
    if(javax.swing.JOptionPane.showConfirmDialog(null,"Deseja realmente Excluir este Agendamento?","ATENÇÃO ",javax.swing.JOptionPane.YES_NO_OPTION)==0) 
    { 
     con_ag = new Firebird(func.fullPath("/db/manutencao.fdb")); 
     con_ag.removeFDB("agendados", "numag", jt_cod.getText()); 
     Agendados.refresh = 1; 
     this.dispose(); 
    } 

} 

public void salvarAgendamento(){ 
     ArrayList<Object> colunas = new ArrayList<>(); 
     ArrayList<Object> valores = new ArrayList<>(); 
     calendario = new Calendario(); 

     if (jcb_motivo.getSelectedIndex() == -1) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou o Motivo do Agendamento!"); 
      jcb_motivo.requestFocus(); 
     } 
     else if (jt_dataAg.getText().equals("")) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou a Data do Agendamento!"); 
      jt_dataAg.requestFocus(); 
     } 
     else if (dados.getStatusAg() == 0) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou selecionar o Status do Agendamento!"); 
      jcb_status.requestFocus(); 
     } 
     else 
     { 
      calendario.dataFormatada("dd/mm/yyyy", "yyyy-mm-dd", jt_dataAg.getText()); 
      dados.setDataAg(calendario.getDataFormatada() + " 00:00:00"); 

      colunas.add("statusag"); 
      colunas.add("obs"); 

      valores.add(jt_tel1.getText()); 
      valores.add(jt_tel2.getText()); 
      valores.add(jt_cel.getText()); 
      valores.add(dados.getConvenioNum()); //convnum 
      valores.add(dados.getDentistaNum()); //dentnum 
      valores.add(jcb_motivo.getSelectedItem()); 
      valores.add(dados.getDataAg()); //dataag 
      valores.add(dados.getStatusAg()); //statusag 
      valores.add(area_obs.getText()); 
      valores.add(jt_cod.getText()); 

      grava(valores); 
      JOptionPane.showMessageDialog(null, "Agendamento alterado com sucesso!"); 
      dispose(); 
     } 
    } 
+0

, которые язык программирования являются теми формами, написанными в? –

+0

его Java ,,, sry ^^ – Galla

ответ

1

Я хотел бы сделать это следующим образом:

Если предположить, что у вас уже есть кнопка "закрыть" на второй форме.

1) Я хотел бы отправить первую форму на второй

SecondForm second = new SecondForm(this); 

Или

SecondForm second = new SecondForm(firstForm); 

The инициализации функции второй формы будет держать экземпляр firstForm и при закрытии, я бы что-то вроде что:

public void actionPerformed(ActionEvent e){ 
firstForm.update(); 
this.close(); 
} 

Извините за размещение только небольших кусков кода, но идея такова:

  • сохранил экземпляр первой формы в вашей второй форме
  • При закрытии второй формы, с помощью кнопки или с помощью «X» кнопка в правом верхнем угле, обновите первую форму с помощью первой Формы общественного

EDIT Я не говорю о spannish (извините, если это другой язык :)), поэтому я сделаю несколько предположений: tabela - это компонент, который показывает данные. Я не в JTable, но есть функция update(). Теперь как это сделать. Я хотел бы изменить строку

new CarregarAgendamento(func.getDados()).setVisible(true); 

в

new CarregarAgendamento(func.getDados(), this).setVisible(true); 

Теперь this reffers к первому классу формы. Потому что я не знаю, как его зовут, я буду называть его FirstForm дальше. ОК?

Итак, CarregarAgendamento есть (другое предположение) второй вид.Я хотел бы обновить инициализации, как этот

public class CarregarAgendamento 
//all previous private field 
private FirstForm first; 

/* Here I assume that the func.getDados() returns Funcoes. If not, change it */ 
public CarregarAgendamento(Funcoes func, FirstForm f){ 
//leave everything as it was, just add the line below 
this.first = f; 
} 

теперь функции:

private void btn_salvaActionPerformed(java.awt.event.ActionEvent evt) {           
    salvarAgendamento(); 
    first.getTabela().update(); //method to update the table. 
    dispose(); 
}           

private void btn_deleteActionPerformed(java.awt.event.ActionEvent evt) {            
    if(javax.swing.JOptionPane.showConfirmDialog(null,"Deseja realmente Excluir este Agendamento?","ATENÇÃO ",javax.swing.JOptionPane.YES_NO_OPTION)==0) 
    { 
     con_ag = new Firebird(func.fullPath("/db/manutencao.fdb")); 
     con_ag.removeFDB("agendados", "numag", jt_cod.getText()); 
     Agendados.refresh = 1; 
     first.getTabela().update(); //method to update the table. 
     this.dispose(); 
    } 

} 

public void salvarAgendamento(){ 
     ArrayList<Object> colunas = new ArrayList<>(); 
     ArrayList<Object> valores = new ArrayList<>(); 
     calendario = new Calendario(); 

     if (jcb_motivo.getSelectedIndex() == -1) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou o Motivo do Agendamento!"); 
      jcb_motivo.requestFocus(); 
     } 
     else if (jt_dataAg.getText().equals("")) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou a Data do Agendamento!"); 
      jt_dataAg.requestFocus(); 
     } 
     else if (dados.getStatusAg() == 0) 
     { 
      JOptionPane.showMessageDialog(null, "Faltou selecionar o Status do Agendamento!"); 
      jcb_status.requestFocus(); 
     } 
     else 
     { 
      calendario.dataFormatada("dd/mm/yyyy", "yyyy-mm-dd", jt_dataAg.getText()); 
      dados.setDataAg(calendario.getDataFormatada() + " 00:00:00"); 

      colunas.add("statusag"); 
      colunas.add("obs"); 

      valores.add(jt_tel1.getText()); 
      valores.add(jt_tel2.getText()); 
      valores.add(jt_cel.getText()); 
      valores.add(dados.getConvenioNum()); //convnum 
      valores.add(dados.getDentistaNum()); //dentnum 
      valores.add(jcb_motivo.getSelectedItem()); 
      valores.add(dados.getDataAg()); //dataag 
      valores.add(dados.getStatusAg()); //statusag 
      valores.add(area_obs.getText()); 
      valores.add(jt_cod.getText()); 

      grava(valores); 
      first.getTabela().update(); //method to update the table. 
      JOptionPane.showMessageDialog(null, "Agendamento alterado com sucesso!"); 
      dispose(); 
     } 
    } 

Как уже говорилось раньше, - я никогда не работал с JTable, так что я не знаю точно, как обновить его. Просто надеюсь, что это сработает. Очевидно, что вы должны добавить эту функцию к вашему FirstForm где:

public JTable getTabela(){ 
    return tabela; 
    } 

Если вы не имеете его уже

+0

Я добавил метод для загрузки второй формы. Вы можете проверить это plz? thx – Galla

+0

и как вы его закрываете? –

+0

Мне просто нужно обновить основную форму, когда я нажму кнопку сохранения или кнопку удаления. Затем он будет применять изменения или удалить регистр и закрыть эту форму. Я добавляю метод сохранения и удаления действий. – Galla

Смежные вопросы