如何使用已作为变量传递的类中的方法

时间:2013-12-25 21:09:49

标签: java swing compiler-errors

我在多个JFrame中有JLabel,所有这些都用作状态指示器。在类 Controller 中,我有一个方法可以更改给定JFrame中的JLabel。 我的问题是如何将JFrame作为变量引用?

import javax.swing.*;

public class Controller {
    public static class Status {
        public static void vPrint(JFrame frame, String text) {
            JLabel label = frame.getConsoleLabel();
            label.setText(text)
        }
    }
}

所以当我在JFrame中调用它时: Controller.Status.vPrint(this, "Set the JLabel Text.");

所有JFrame都有方法getConsoleLabel()

问题在于,当我调用它时,它会说:cannot find symbol: method我认为原因是没有引用变量帧。

任何解决方案?

2 个答案:

答案 0 :(得分:3)

您似乎正在将JFrame扩展到某个类,但尝试在没有此类方法的超类getConsoleLabel()上调用JFrame。所以是的,无论这个实例的引用指的是哪种类型,你都无法在getConsoleLabel的实例上调用JFrame。而是声明自己的MyFrame extends JFrame框架,其getConsoleLabel()的实现更改vPrint的签名,参数类型为MyFrame,并将所需的MyFrame类型的实例传递给{ {1}}。

并且不要像安德鲁建议的那样使用多个vPrint。按照他的链接回答。

答案 1 :(得分:0)

您的专业JFrames有[{1}}方法。

您有两种解决方案:

  1. 使用getConsoleLabel()创建一个界面,并使所有getConsoleLabel()实现该界面。并更改JFrame的签名以接受您的界面实例,而不是vPrint
  2. 创建一个JFrame类,其中包含LabledFrame extends JFrame并从中扩展所有getConsoleLabel(),并更改JFrame以接受{{1}的实例而不是vPrint