我目前的问题是我使用this.setVisible(false)隐藏了我的jframe1,并调用了jframe2。但是如何再次进入相同的jframe1?我可以设置jframe1.setVisible(true),但这将调用新的jframe1。

我隐藏的以前的jframe1有我从登录表单中提取的mysql数据。现在您可以看到,我的问题是,如果我将jframe1的jframe1设置为setVisible(true),它将实际上运行新的jframe1,并且以前具有登录表单的所有先前数据都将丢失。

供您参考,我的jframe1有2个覆盖类,jframe1()和jframe1(String getUsername,String getPassword)。我正在使用jframe1(String getUsername,String getPassword)从登录表单调用jframe1。

实例情况
来自jframe1(String getUsername,String getPassword)

//button to move from jframe1 to jframe2   (at jframe1)
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {

jframe2 frame2 = new jframe2();
this.setVisible(false); // i hide jframe1(String , String) and call jframe2
                        // i use this.setVissible(false) because i dont know how to put
                        // jframe1(2 parameter) with setVisible().

frame2.setVisible(true);// call jframe2

}


取消隐藏并从jframe2再次调用jframe1(String,String)

 private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {

     jframe1 frame1 = new jframe1(); //i have no idea how create jframe1 instance
                                     //with 2 parameter, perhap this is the reason
                                     // i failed to call previous jframe1

     mf.setVisible(true);  // unhide and call jframe1, unfortunately it will
                           // create new jframe1 form, i have no idea how to
                           // call/unhide the previous jframe1

     this.setVisible(false);  //hide jframe2

最佳答案

我不确定这是否是您要寻找的东西。听起来,您希望能够从另一个类中还原隐藏的(frame1.setVisible(false);)窗口。

为此,您必须提供对frame1的引用的访问权限。然后,您可以按原样还原窗口。

您的主窗口:

public class Window1 extends JFrame {
    private final String username;
    private final String password;


    public Window1 (final String username, final String password) {
        this.username = username;
        this.password = password;

        // do initial stuff for you frame here

        this.setVisible(true);
    }

    // have to implement actual button action listener here
    private onButtonClick() {
        final Window2 = new Window2(this);

        this.setVisible(false);
    }

}


您的第二个窗口(可能是对话框还是其他?):

public class Window2 extends JFrame {
    private final JFrame firstWindow;

    public Window2(final JFrame firstWindow) {
        if (firstWindow == null)
            throw new IllegalArgumentException("No main window specified");

        this.firstWindow = firstWindow;

        // do initial stuff for your temp window here

        this.setVisible(true);
    }


    // have to implement actual button action listener here
    private onButtonClick() {
        firstWindow.setVisible(true);
        this.dispose();
    }
}

关于java - 如何取消隐藏/调用带有两个参数的jframe类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22803122/

10-09 02:57