2011-08-01 70 views
2

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

任何意见或建议表示赞赏。

谢谢!

回答

1

由于这篇文章没有被标记为已解决,我想你还没有找到解决问题的办法。 这里只有两件事情可能是错的。你的第二课是错的,或者你的听众是。所有你需要确保让你的“第二帧”显示的是添加setVisible(true),并创建你的第二类的新对象,如前面的帖子所述。

这是你的第二类需要什么来创建一个空的窗口:

public class MySecondClass extend JFrame{ 

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

和你的听众应该如下面的mainclass的构造函数:

theButton.addActionListener(new buttonListener()); 

和最后,添加以下为您mainclass一个内部类:

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

,如果你仍然不能得到您的合作去工作,加入你的第二个类的构造函数打印行,一个在你的监听器类,因此您可以找出哪些部分有故障

+0

@Johnston为什么这被标记为答案?除了很早之前,似乎rosh提供了相同的信息。只是好奇。 – KyleM

1

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

试试这个:

new GUIConstructorNameHere.setVisible(true); 

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

+0

以及我想创建一个新的窗口,并调用具有第二Java类文件所有成品的配件已经建立 – Johnston

1

你应该为此创建一个方法,假设你有两个文件,例如。 file1 & file2 单击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 
} 
+0

做我的路径添加到文件中的“新文件2()” backets?此外,我不开始在第二个文件的图形用户界面,所以我必须做的,我做一个调用setVisible之前 - 你的答案 – Johnston

+1

感谢你并不需要在添加路径“新文件2()”括号,&我不认为我们需要在第二个启动GUI,“file2 f2 = new file2();”启动它&“f1。seVisible(true);“只是让它可见:) – Roshan

1

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

+0

另外,我不应该为了实例化一个新的YourSecondClass(),你将需要了解导入语句,谷歌它(或更深入地解释它是什么你需要做什么...我不想解释对你没有帮助的事情) – KyleM

+0

对不起,没有指定 - 即时通讯使用Swing - 它完全放弃了我的想法 – Johnston

+1

@Johnston没有问题。第二类扩展JPanel?如果不是,你能显示第二类的相关代码吗?一般来说,任何属于JButton这样的组件,文本字段等都可以添加到JPanel或JFrame中,因为它们都是容器。因此(如果你的第二个类不扩展JPanel),你应该实例化一个urObj = new YourSecondClass()并且执行你的NewJpanel.Add(urObj.textField)等。 – KyleM

相关问题