在GUI中打开另一个.java文件

时间:2011-11-03 02:06:50

标签: java swing user-interface

短而甜:我希望能够通过点击Netbeans for Mac中GUI的按钮来运行另一个.java文件。

多一点解释: 我正在重新创建一个我在java开始时创建的项目,以使其更清晰。我已经做了很多改进,虽然我遇到的一个问题是我在一个JFrame中有太多的面板,每当我更换面板时,我最终都会有大量的代码设置可见性。

例如:

jPanel1.setVisible(false);
jPanel2.setVisible(false);
jPanel3.setVisible(true);

我知道我可以忍受它,但我想看看是否有办法将代码/面板分开一点,如下所述。 我的第一个想法是拥有多个文件;每页一个。类似于你在html中的表现。

因此,我有LoginPage.java和GuestMainPage.java。 如果有可能,我希望能够链接它们,例如: 关闭LoginPage.java 打开GuestMainPage.java ,点击按钮。

基本上,当我单击GUI上的按钮时,我希望能够将编译打开另一个.java文件。 (如果有帮助,文件将在同一个项目中。)

示例 如果有办法打开另一个文件。可能通过访问终端命令?

public class LoginPage extends javax.swing.JFrame {

//Excluded a bunch of generated code from Netbeans

private void Login(java.awt.event.MouseEvent evt) {
//Code executed on Mouse Click of a Button labeled Login.

            if(username.equalsIgnoreCase("guest")){

                  //A bit of pseudocode
                  open(GuestMainPage.java);
                  close(LoginPage.java);

            }
            if(username.equalsIgnoreCase("admin")){

                  open(AdminMainPage.java);
                  close(LoginPage.java);

            }
}
}

从研究和经验来看,我知道您可以访问其他文件或同一项目中的其他类 - 因此使用对象等 - 但我不知道您是否可以物理运行其他文件。我能够通过java访问终端的可能性。 (然后有能力做任何事情,我也找不到怎么做。)

我已经查看了很多stackoverflow主题,试图找到答案,以及大量的谷歌搜索,但我找不到真正回答我的问题。但是,如果真的没有办法做到这一点,那么我很满意答案确认,如果是这样的话,我将只需要处理多个小组。

谢谢

-Ewan

3 个答案:

答案 0 :(得分:4)

不,你没有“打开”其他类似的文件,也不想。而是将所有Java文件编译为类文件并使用其他类。您可以使用自定义类加载器在命令上加载类,但我真诚地怀疑您的应用程序确实需要它。相反,它只需要一些MVC(模型 - 视图 - 控制器)结构(正如ilea - 1+所指出的那样)和预见。

要考虑的一个不错的解决方案是使用CardLayout,因为这可以极大地简化更改GUI“视图”或顶级容器(如applet或JFrame)中显示的组件。您可以在这里阅读如何使用这些人:How to use CardLayout

答案 1 :(得分:2)

您应该尝试实现MVC模式。看一下spring:http://www.springsource.org/

答案 2 :(得分:0)

我看到你会像我一样做。请从小开始。假设我有一个“.java”文件,我想用JFRAME按钮运行它,所以我可以将这个“.java”文件创建到JAR文件中,然后使用JBUTTON我可以使用此代码运行该JAR文件

try { 
    Desktop.getDesktop().open(new File("Path of the *.jar File"));     
} catch(IOException ex) {
    System.out.println(ex.getMessage());
}

试试这个。