Я бы сделал это так:
Предположим, у вас уже есть кнопка "Закрыть" на второй форме.
1) Я бы отправил первую форму второй
SecondForm second = new SecondForm(this);
Или
SecondForm second = new SecondForm(firstForm);
Функция инициализации формы Second сохранит экземпляр firstForm, и при закрытии я получу что-то вроде этого:
public void actionPerformed(ActionEvent e){
firstForm.update();
this.close();
}
Извините за публикацию тольконебольшие куски кода, но идея такова:
- Сохраните экземпляр первой формы во второй форме
- При закрытии второй формы, с помощью кнопки или с помощью кнопки «X» в правом верхнем углуобновить первую форму через первую форму public
EDIT Я не говорю по-испански (извините, если это другой язык :)), поэтому я сделаю несколько предположений: tabela
этокомпонент, который показывает данные.Я не вхожу в JTable, но есть функция update()
.Теперь, как это сделать.Я бы изменил строку
new CarregarAgendamento(func.getDados()).setVisible(true);
на
new CarregarAgendamento(func.getDados(), this).setVisible(true);
Теперь this
относится к первому классу формы.Поскольку я не знаю, как он называется, я буду называть его FirstForm
в дальнейшем.ок?
Итак, CarregarAgendamento
является (другое предположение) второй формой.Я бы обновил init следующим образом:
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;
}
Если у вас ее уже нет