2014-07-03 51 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)! –

相關問題