当前位置: 首页 > 知识库问答 >
问题:

如何在新打开的jframe上关闭以前的jframe

罗毅
2023-03-14

我有一个问题,就是在一次单击一个按钮的过程中处理两个JFrames。我有2个JFrames(SUC_Forms和add_suc),当SUC_Forms中的按钮“Add Records”被点击时,将显示另一个新的JFrame,它是add_suc JFrame,包含注册/归档的文本框。当我按ok验证并插入数据库中的所有数据时,将弹出一个JDialogbox进行确认。当我点击“OK”后,两个JFrames都将进行处理,然后SUC_Forms-JFrame将再次显示,其中包含更新后的数据。我有一个问题,当前的JFrames如何能够访问以前的和活动的JFrames。你能帮我解决这个问题吗?事先谢谢..

这是我的打印屏幕。

SUC_Forms代码

    add_suc add = new add_suc();
    add.show();

private void btn_okActionPerformed(java.awt.event.ActionEvt){

    int verify = JOptionPane.showConfirmDialog(rootPane,"Are you sure you want to add this record?","", JOptionPane.YES_NO_OPTION);

    if(verify == 0)
    {

       String moa_id = txt_id.getText();
       Object region = cmb_region.getSelectedItem();
       String holder = txt_holder.getText();
       String brgy = txt_brgy.getText();
       String municipality = txt_municipality.getText();
       String province = txt_province.getText();
       String president = txt_president.getText();
       Object month = cmb_month.getSelectedItem();
       Object day = cmb_day.getSelectedItem();
       String year = txt_year.getText();
       String area = txt_area.getText();
       String allotment = txt_allotment.getText();
       String activities = txt_activities.getText();
       String status = txt_status.getText();
       String fill = "";

       if(moa_id.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill Moa ID!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }

       if(region.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please select region!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(holder.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill holder!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(brgy.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill barangay!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(municipality.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill municipality!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(province.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill province!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
        else if(president.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill president/representative!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
        else if(month.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please set the month of Date Approved field!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }

       else if(day.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please set the date of Date Approved field!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(year.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please set the year of Date Approved field!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(area.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill area!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(allotment.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill allotment!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(activities.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill activities/roles!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }
       else if(status.equals(fill))
       {
           JOptionPane.showMessageDialog(rootPane, "Please fill status!", "Message",JOptionPane.ERROR_MESSAGE,null);
       }

       else{

        try{

        st = con.createStatement();

        String query =  "insert into moa_suc values('"+moa_id+"','"+region+"','"+holder+"','"+brgy+"','"+municipality+"','"+province+"','"+president+"','"+month+"','"+day+"','"+year+"','"+area+"','"+allotment+"','"+activities+"','"+status+"')";

        st.executeUpdate(query);

        txt_id.setText("");
        cmb_region.setSelectedItem(0);
        txt_holder.setText("");
        txt_brgy.setText("");
        txt_municipality.setText("");
        txt_province.setText("");
        txt_president.setText("");
        cmb_month.setSelectedItem(0);
        cmb_day.setSelectedItem(0);
        txt_year.setText("");
        txt_area.setText("");
        txt_allotment.setText("");
        txt_activities.setText("");
        txt_status.setText("");

        JOptionPane.showMessageDialog(rootPane, "Successfully added to the record!", "Message",JOptionPane.INFORMATION_MESSAGE,null);
        this.dispose();

    }
    catch(SQLException err){

        System.out.println(err.toString());   
    }

     }

    }
    else
    {
        JOptionPane.showMessageDialog(rootPane, "Sorry! No data added in the record!", "Message",JOptionPane.INFORMATION_MESSAGE,null);
    }

}

共有1个答案

臧俊杰
2023-03-14

由于要向其中添加新记录的JFrame仍然打开,您可以使用SUC_Forms中的一个方法,在该方法中将新记录作为参数传递。要做到这一点,您必须在add_suc中获得对SUC_Forms的引用。例如,在打开此框架时,可以将此引用传递给add_suc的构造函数。然后可以调用该方法来使用对suc_forms的引用添加记录。

您的构造函数将如下所示:

add_suc(SUC_Forms parent)
{}

并在SUC_Forms中创建如下方法:

public void addRecord(-here you pass the required parameters-)
{}
parent.addRecord(-parameters-);
 类似资料:
  • 问题内容: 现在的示例中,我有一个包含jtable的主框架,显示所有客户信息,并且有一个create按钮来打开一个新的JFrame,允许用户创建新客户。我不希望用户可以打开多个创建框架。任何swing组件或API都能做到吗?或如何禁用主机?类似于JDialog。 问题答案: 我建议您将新客户对话框设置为模态,以便在应用程序可见时,不允许其他对话框/框架中的输入。请查看模态教程以了解详细信息。

  • 问题内容: 我试图在弹出新框架时禁用“主” 。我想要它,所以您不能在该框架上单击或拖动任何东西。我尝试将新框架设为a ,但这并没有禁用其他框架。我还查看了有关此的另一篇文章,建议将其设置为a,但仍然无法正常工作。我真的需要帮助。谢谢。这是我正在使用的代码,他们有什么问题吗? 代表“主”框架。 问题答案: 您已经设置了JDialog#setModal或JDialog#ModalityTypes,可能

  • 问题内容: 我有一个主JFrame,其中具有用于不同功能的各种面板,人们可以在其中进行计算。我想在用户单击第一个计算按钮时打开一个新的JFrame并用作“输出”窗口(如果您熟悉它们,则类似于SPSS输出窗口)。 New JFrame将是完全独立的,并且将具有其自己的菜单栏。简单的JDialog并不是解决之道。 问题答案: 无法抗拒,简单地不同意答案); 和 我想在用户单击第一个计算按钮时打开一个新

  • 我在网上查看了如何从现有的JFrame打开一个新的JFrame。我发现,最好的方法显然是处理现有的JFrame,然后打开新的JFrame--但这是一个问题。 我有一个登录表单,一个用户登录,登录框架被处理,主框架被设置为可见。 但是,如果用户启动客户端,然后决定不登录并关闭它,则进程仍在后台运行? 我觉得这是一个非常愚蠢的问题,如果是这样,我很抱歉,但我已经四处寻找,找不到任何解决办法。我可以不处

  • 我复制了一个模板从coDepen。这段代码非常过时,有一些旧的cdn链接。这意味着我必须找到这些链接的更新版本。我是如此接近使应用程序完全功能,我需要打开后关闭模式。我相信这和自举有关。链接和模态代码如下。

  • 在页面中收集各种链接后,我点击这些链接并将其收集成汤。现在的问题是,链接在新标签中打开。我想在代码打开新标签中的下一个链接之前关闭标签。下面是代码片段。收完汤后,请帮我把每个标签关上。 我用python 3.7硒铬驱动