编辑:忘了说它的Java - sry;)
Edited2: 这是我用来调用secundary形式的方法。我使用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);
}
}
编辑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 :(得分:1)
我会这样做:
假设您已在第二张表格上有“关闭”按钮。
1)我会将第一张表格发送到第二张
SecondForm second = new SecondForm(this);
或者
SecondForm second = new SecondForm(firstForm);
第二种形式的init函数会保留firstForm实例,当关闭时,我会这样做:
public void actionPerformed(ActionEvent e){
firstForm.update();
this.close();
}
很抱歉只发布一小段代码,但想法是:
修改强>
我不会说西班牙语(对不起,如果那是另一种语言:)),所以我会做一些假设:tabela
是显示数据的组件。我不是JTable,但仍有update()
功能。现在该怎么做。我会改变行
new CarregarAgendamento(func.getDados()).setVisible(true);
到
new CarregarAgendamento(func.getDados(), this).setVisible(true);
现在,this
引用了第一个表单类。因为我不知道它的调用方式,我将进一步称之为FirstForm
。 OK?
因此,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;
}
如果你还没有它