有没有办法在类之间使用方法?

时间:2014-07-03 21:23:31

标签: java swing class oop methods

我在同一个包中有两个.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部分中使用?或者有更好的方法来解决这个问题吗?提前谢谢。

2 个答案:

答案 0 :(得分: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();
      }
    }
    

答案 1 :(得分:0)

通过替换

使methodIWantToUse()成为静态
public myMethodIWanttoUse()

public static myMethodIWanttoUse()

其次,将AppFrame标记为public而不是private

然后只需按此方法调用HFSim.AppFrame.myMethodIWantToUse()

修改

或者,您不必制作方法static。只需在GUI代码中添加:

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

不管怎样,你必须让AppFrame成为public