【问题标题】:Calling a separate Java file to open a second gui window调用单独的 Java 文件以打开第二个 gui 窗口
【发布时间】:2011-10-17 03:36:24
【问题描述】:

我目前有一个 java 文件,其中包含用于创建新 GUI 窗口的按钮。当用户单击特定按钮时,我希望在同一个项目中打开第二个 java 文件。第二个文件添加了所有组件,只需要在我的“主要 java 文件”(文件一)中启动。我怎样才能做到这一点? (调用和调用并实例化第二个java文件而不是方法)。

欢迎提出任何意见或建议。

谢谢!

【问题讨论】:

    标签: java eclipse swing user-interface


    【解决方案1】:

    由于此帖子尚未标记为已解决,我想您还没有找到问题的解决方案。 这里只有两件事可能是错的。要么你的第二堂课错了,要么你的听众错了。您只需添加 setVisible(true) 并创建第二类的新对象,以确保显示“第二帧”,如之前的帖子所述。

    这是你的第二个班级需要创建一个空窗口:

    public class MySecondClass extend JFrame{
    
       public MySecondClass(){
            setSize(200, 200);
            setVisible(true);
            //additional calls
         }
    }
    

    你的监听器应该在你的主类的构造函数中如下所示:

    theButton.addActionListener(new buttonListener());
    

    最后,在主类中添加以下内容作为内部类:

    public class buttonListener implements ActionListener{
            public void actionPerformed(ActionEvent e){
                    new MySecondClass();
              }
    }
    

    如果您仍然无法让您的代码工作,请在您的第二个类的构造函数中添加一个打印行,并在您的侦听器类中添加一个打印行,以便您找出哪个部分有问题

    【讨论】:

    • @Johnston 为什么将其标记为答案?似乎 rosh 提供了相同的信息,但更早一些。只是好奇。
    【解决方案2】:

    嗯,我不知道我理解是否正确,但是您想在单击按钮时创建窗口?

    试试这个:

    new GUIConstructorNameHere.setVisible(true);
    

    PS:GUIConstructorName 是你要展示的类的构造方法。

    【讨论】:

    • 好吧,我想创建一个新窗口并调用第二个已设置所有组件的 java 类文件
    【解决方案3】:

    您应该为此创建一个方法,假设您有两个文件,例如。文件 1 和文件 2 您必须通过单击 file1 中的按钮从 file1 导航到 file2。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
    {
    file2 f2 = new file2();
    this.dispose(); //closes current file
    f1.seVisible(true); //opens the next file
    }
    

    【讨论】:

    • 我是否在“new file2()”备份中添加文件的路径?此外,我没有在第二个文件中启动 gui,所以我必须在执行 setVisible 之前这样做 - 感谢您的回答
    • 您不需要在“new file2()”括号中添加路径,&我认为我们不需要在第二个中启动 GUI,“file2 f2 = new file2(); "启动它 & “f1.seVisible(true);”只是让它可见:)
    【解决方案4】:

    您没有提供足够的信息。 Java 有不止一个 GUI 库,Swing 和 SWT 是立即浮现在脑海中的那些。如果您正在使用 Swing 并且您想要显示的“第二类文件”扩展了 JPanel,那么您可以创建一个新的 YourSecondClass() 并将其添加到您的 JFrame。在 Swing 中,所有组件都必须添加到容器中,因此您的第二类必须是容器(例如 JPanel),或者您的第二类中的组件可以添加到现有容器中。

    【讨论】:

    • 另外,我不应该为了实例化一个新的 YourSecondClass() 你需要理解导入语句,谷歌它。 (或者更深入地解释你需要做什么......我不想解释对你没有帮助的事情)
    • 抱歉没有指定——我正在使用 Swing——我完全忘记了
    • @Johnston 没问题。那么您的第二类是否扩展了 JPanel?如果没有,你能显示第二课的相关代码吗?一般来说,任何属于组件的东西,例如 JButton、文本字段等,都可以添加到 JPanel 或 JFrame,因为它们都是容器。因此(如果您的第二个类不扩展 JPanel)您应该实例化一个 urObj = new YourSecondClass() 并执行 yourNewJpanel.Add(urObj.textField) 等。
    • 我的两个文件都扩展了 JFrame。我也尝试过执行 file2 window = new file2(); (file2 是我在项目中的另一个文件)正如我之前提到的,我不想将这些组件添加到我当前的窗口中,而是打开一个新窗口并在该类中添加组件
    • @johnston 然后看起来(正如其他发帖者回答的那样)创建一个 urObj= new YourSecondClass() 然后 urObj.setVisible(true) 应该可以解决问题。但是,您确实需要先导入您的课程。另外,只是一个旁注,请参考[你所称的文件]作为一个类。
    猜你喜欢
    • 2016-09-23
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多