如何使用两个参数取消隐藏/调用jframe类

时间:2014-04-02 06:26:09

标签: java swing jframe

我目前的问题是我通过使用this.setVisible(false)来隐藏我的jframe1并调用jframe2。但我怎么再次去同一个jframe1?我可以设置jframe1.setVisible(true),但这会调用一个新的jframe1。

我隐藏的前一个jframe1有我从登录表单中提取的mysql数据。现在你看,我的问题是,如果我从jframe2将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

1 个答案:

答案 0 :(得分:2)

我不确定那是不是,你在寻找什么。听起来,您希望能够从另一个类中恢复隐藏的(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();
    }
}