2014-07-03 52 views
0

我在同一个包中有两个.java文件。我打算将第一个.java文件作为底层代码,第二个.java文件是GUI的swing界面。有没有办法在类之间使用方法?

我遇到的问题是在项目的GUI部分工作时,我需要使用代码访问.java文件中的多个方法。与代码我的java文件是这样的:

package same; 
    public class HFSim extends ApplicationTemplate 
    { 
     private static class AppFrame extends ApplicationTemplate.AppFrame 
      { 

      public myMethodIWanttoUse() 
        { 
        //code 
        } 

在我的GUI的.java:

package same; 
    public class GUI extends JFrame 
    { 
     public GUI() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       //this is where I want to use the method from above 

有没有获得在GUI部分使用该方法的方法吗?还是有更好的方法来解决这个问题?提前致谢。

回答

0

methodIWantToUse()静态与

public static myMethodIWanttoUse() 

其次更换

public myMethodIWanttoUse() 

,使AppFrame标记为public而不是private

然后,只需拨打电话HFSim.AppFrame.myMethodIWantToUse()即可。

编辑:

或者,你没有让你的方法static。只需在您的GUI代码补充一点:

HFSim.AppFrame frame = new HFSim.AppFrame(); 
frame.myMethodIWantToUse(); 

不过,不管你有什么,使AppFramepublic

+0

使用'static'通常是GUI设计不佳的标志。 –

4

您有多种解决方案来解决您的问题。你应该回答的第一个问题是你需要调用的这些方法是否合格。

  • 他们是实用的方法吗? (他们不需要一个对象的实例来工作)
  • 它们是否附加到对象的单个实例?
  • 您是否需要调用特定对象的方法而不仅仅是方法?

您可以:

  • 声明他们static,并呼吁他们,如HFSim.AppFrame.myMethoIWanttoUse();

  • 声明对象的一个​​包含它们的静态实例,如

    public class HFSim extends ApplicationTemplate { 
        public static final AppFrame appFrame = new AppFrame(); 
        ... 
    }  
    
    public class GUI extends JFrame { 
        public GUI() { 
        public void actionPerformed(ActionEvent e) { 
         HFSim.appFrame.myMethodIWanttoUse(); 
        } 
        } 
    } 
    
  • 将对象的实例传递给另一个:

    public class GUI extends JFrame { 
        private final HFSim.AppFrame appFrame; 
    
        public GUI(HFSim.AppFrame appFrame) { this.appFrame = appFrame; } 
    
        public void actionPerformed(ActionEvent e) { 
        appFrame.myMethodIWanttoUse(); 
        } 
    } 
    
+0

*“你需要调用特定对象的方法而不仅仅是方法吗?”* ..什么?哪些*“特定对象的方法”* *“不仅仅是方法”*? –

+1

@AndrewThompson:它是为了标记一个具体给定的对象,这是先验已知的,或任何给定对象可能不同上调用方法上调用方法之间的差异。这两种选择都需要不同的封装级别来获得灵活性和简单性之间的最佳平衡。 – Jack

+0

该解释应该是[部分答案](http://stackoverflow.com/posts/24563584/edit)! –

相关问题