【问题标题】:java Access parent method from imported child classjava 从导入的子类访问父方法
【发布时间】:2013-08-14 22:04:08
【问题描述】:

我是 Java 新手。从网络学习。我的代码存在问题。 我有三个班。 mainclass.java、oneclass.java、twoclass.java。 我在mainclass中导入了oneclass和twoclass。

oneclass 有一个“下一步”按钮。我想做的是在下一个 btn 上的 onActionEvent,从 mainclass 调用一个函数,这会将 oneclass 的可见性设置为 false 并将 twoclass 的可见性设置为 true。 我发布了整个代码 主类.java

    package com.mainclass;
    import com.twoframe.twojframes;
    import com.secondframe.secondjframe;

public class MainClass {
    private static com.secondframe.twoclass panel2;
    private static com.twoframe.oneclass panel1;


    private static void openPanel1(){
      panel1 = new com.twoframe.oneclass();
      panel1.setVisible(true);
    }
    public static void toggleVisibility(){
        System.out.println("called from child");
        panel2 = new com.secondframe.twoclass();
        panel2.setVisible(true);
        panel1.setVisible(false);
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                openPanel1();
            }
        });

    }
}

oneclass.java

jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
        {                                         
            // TODO add your handling code here:
           //Basically something like -- mainclass.toggleVisibility();

        } 

谢谢。

【问题讨论】:

  • 您将需要发布所有代码。这段代码有多个错误,听起来你还有更多问题。
  • 你所说的“导入”是什么意思,因为我可以看到你所做的只是从另一个类调用静态函数(与继承无关)。
  • @chrylis 我发布了我的 MainClass.java 代码。 oneclass.java 只有一个 jpanel 和 jbutton 以及一个添加到该按钮的 actionevent,该按钮需要从 MainClass 调用 togglevisibility()。

标签: java netbeans jframe


【解决方案1】:

假设“父级”是您正在扩展的类,并且您正在调用的方法不是静态的,以下应该可以解决问题:

super.toggleVisibility();

如果是静态方法,那就更简单了:

ParentClassName.toggleVisibility();

【讨论】:

  • 我刚刚发布了 MainClass.java 中的所有代码。我无法从 oneclass.java 访问 MainClass.toggleVisibility(),因为我将 oneclass 导入 MainClass。
  • @user2684067 import MainClass to OneClass,你就可以调用它的静态方法了。
  • 您的“我无法访问”语句不正确。 import 所做的只是给你一个简写,这样你就不必使用com.twoframes.thisnthat.ClassName 并且可以直接说ClassName。也许您还需要将MainClass 导入您的oneClass
  • 感谢您的帮助。将 MainClass 导入到 oneclass 后,我就可以访问该方法。我没有这样做,因为我将 MainClass 视为父类,将其他类视为其子类。所以我认为将父类导入其子类是不正确的。 @chrylis 类名在我的文件中是正确的,只是我在这里使用了不同的名称并且混淆了。非常感谢大家的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 2021-07-09
  • 1970-01-01
  • 2012-07-04
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多