调用单独的Java文件以打开第二个gui窗口

调用单独的Java文件以打开第二个gui窗口,java,eclipse,swing,user-interface,Java,Eclipse,Swing,User Interface,我目前有一个java文件,其中包含创建新GUI窗口的按钮。我有第二个java文件,它位于同一个项目中,我希望在用户单击特定按钮时打开它。第二个文件添加了所有组件,只需要在我的“主java文件”(文件一)中启动。我该怎么做?(调用并实例化第二个java文件,但不创建该方法) 如有任何意见或建议,我们将不胜感激 谢谢 嗯,我不知道我是否理解正确,但你想在单击按钮时创建窗口吗 试试这个: new GUIConstructorNameHere.setVisible(true); 注:GUIConstr

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

如有任何意见或建议,我们将不胜感激


谢谢

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

试试这个:

new GUIConstructorNameHere.setVisible(true);

注:GUIConstructorName是您要显示的类的构造函数方法。

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

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

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

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

这是第二个类创建空窗口所需的:

public class MySecondClass extend JFrame{

   public MySecondClass(){
        setSize(200, 200);
        setVisible(true);
        //additional calls
     }
}
在main类的构造函数中,您的侦听器应该如下所示:

theButton.addActionListener(new buttonListener());
public class buttonListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
                new MySecondClass();
          }
}
最后,在mainclass中添加以下内容作为内部类:

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

如果您的代码仍然无法正常工作,请在第二个类的构造函数中添加一个打印行,在侦听器类中添加一个打印行,这样您就可以确定哪个部分有问题了,我不认为为了实例化一个新的YourSecondClass(),你需要理解import语句,用谷歌搜索它。(或者更深入地解释一下你需要做什么……我不想解释那些对你没有帮助的事情)很抱歉没有具体说明——我使用的是Swing——我完全忘记了我的意思mind@Johnston没问题。那么,您的第二个类是否扩展了JPanel?如果没有,您能否显示第二类中的相关代码?一般来说,任何组件(如JButton、文本字段等)都可以添加到JPanel或JFrame中,因为它们都是容器。因此(如果您的第二个类没有扩展JPanel),您应该实例化一个urObj=new YourSecondClass(),并执行yourNewJpanel.Add(urObj.textField)等操作。我的两个文件都扩展了JFrame。我还尝试通过file2 window=newfile2()来安装我的文件;(文件2是我在项目中的另一个文件)正如我前面提到的,我不想把这些组件添加到我的当前窗口中,而是打开一个新窗口并在其中添加组件class@johnston然后(正如其他海报所回答的那样)创建一个urObj=newyoursecondclass(),然后创建urObj.setVisible(true)就可以了。但是,您确实需要先导入类,然后才能正常工作。另外,请注意,请将[what you's calling a file]作为类引用。我是否要在“new file2()”backets中添加该文件的路径?另外,我不需要在第二个文件中启动gui,因此我必须在执行setVisible之前启动gui-感谢您的回答您不需要在“new file2()”括号中添加路径,我认为我们不需要在第二个文件中启动gui,“file2 f2=new file2();”启动它&“f1.seVisible(true);”只是让它可见:)@Johnston为什么这被标记为答案?看起来rosh提供了相同的信息,只是更早。只是好奇。