2011-11-03 76 views
0

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

多一点的解释: 我重建我创建了一个项目,当我开始用java,使之清洁。我做了很多改进,尽管我遇到的一个问题是我在一个JFrame中有太多的面板,并且每当我改变面板时,我都会有大量的代码设置可见性。

如:

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

我知道我可以只住在一起,但我想看看是否有分开的代码的方式/面板多一点,如以下描述。 我的第一个想法是有多个文件;每个页面一个。与您在html中的方式类似。

因此,我有LoginPage.java和GuestMainPage.java。 如果有可能,我希望能够将它们联系起来,如:接近LoginPage.java开放GuestMainPage.java,按钮上的点击。

基本上,我希望能够使它编译开放另一个java文件,当我点击我的GUI的按钮。 (如果有帮助,该文件将在同一个项目。)

如果有打开另外一个文件的方式。可能通过访问终端命令?

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

+2

您不“运行”.java文件。他们是源代码。 –

+0

我只是使用术语“运行”,因为它是Netbeans在编译代码以测试它时使用的术语。我编辑了这个问题,使其更加清晰。 – Displonker

+1

对于什么源代码与编译类以及如何实例化和使用它们,你真的好像很困惑。我真的,真的建议一本好的Java初学者书。 –

回答

2

你应该尝试实现一个MVC模式。看看春天:http://www.springsource.org/

+1

与netbeans相比,springource环境非常的自由。使得更容易掌握MVC的概念。 – Displonker

4

不,你没有“打开”其他文件这样的,你也不希望。而是将所有Java文件编译为类文件并使用其他类。您可以使用自定义类加载器在命令中加载类,但是我真诚地怀疑您的应用程序真的需要它。相反,它只需要一些MVC(模型 - 视图 - 控制器)结构(正如他们所注意到的那样)和预先考虑。

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

+0

CardLayout +1 – mKorbel

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()); 
} 

试试这个。

+0

这不是你想要的,但它会帮助你得到你想要的。 – International

相关问题