Java 如何使用作为变量传入的类中的方法

Java 如何使用作为变量传入的类中的方法,java,swing,compiler-errors,Java,Swing,Compiler Errors,我在多个jframe中有jlabel,它们都用于作为状态指示器。在类控制器中,我有一个方法可以更改给定JFrame中的JLabel我的问题是如何引用JFrame作为变量? import javax.swing.*; public class Controller { public static class Status { public static void vPrint(JFrame frame, String text) { JLabel

我在多个jframe中有jlabel,它们都用于作为状态指示器。在类控制器中,我有一个方法可以更改给定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(这是“设置JLabel文本”)

所有jFrame都有方法
getConsoleLabel()

问题是,当我调用它时,它说:
找不到symbol:method
,我认为原因是变量框架没有被引用


有什么解决方案吗?

似乎您正在将
JFrame
扩展到某个类,但试图在超级类
JFrame
上调用
getConsoleLabel()
,而该类没有这样的方法。因此,是的,您不能在
JFrame
的实例上调用
getConsoleLabel
,无论该实例的引用引用引用的是哪种类型。而是声明您自己的框架
MyFrame扩展了JFrame
,它实现了
getConsoleLabel()
使用参数type
MyFrame
更改
vPrint
的签名,并将类型
MyFrame
的所需实例传递给
vPrint


不要像安德鲁建议的那样使用多个
JFrame
。按照他链接的答案进行操作。

似乎您正在将
JFrame
扩展到某个类,但试图在超级类
JFrame
上调用
getConsoleLabel()
,而该类没有这样的方法。因此,是的,您不能在
JFrame
的实例上调用
getConsoleLabel
,无论该实例的引用引用引用的是哪种类型。而是声明您自己的框架
MyFrame扩展了JFrame
,它实现了
getConsoleLabel()
使用参数type
MyFrame
更改
vPrint
的签名,并将类型
MyFrame
的所需实例传递给
vPrint


不要像安德鲁建议的那样使用多个
JFrame
。按照他链接的答案进行操作。

好吧,你有
getConsoleLabel()
方法

您有两种解决方案:

  • 使用
    getConsoleLabel()
    创建一个接口,并使所有
    JFrame
    实现该接口。并更改
    vPrint
    的签名以接受接口实例,而不是
    JFrame
  • 创建一个类,例如
    LabledFrame extensed JFrame
    ,它具有
    getConsoleLabel()
    ,并从中扩展所有
    JFrame
    ,然后更改
    vPrint
    以接受
    LabledFrame
    的实例,而不是
    JFrame

  • 您专门使用了
    JFrames
    s的
    getConsoleLabel()
    方法

    您有两种解决方案:

  • 使用
    getConsoleLabel()
    创建一个接口,并使所有
    JFrame
    实现该接口。并更改
    vPrint
    的签名以接受接口实例,而不是
    JFrame
  • 创建一个类,例如
    LabledFrame extensed JFrame
    ,它具有
    getConsoleLabel()
    ,并从中扩展所有
    JFrame
    ,然后更改
    vPrint
    以接受
    LabledFrame
    的实例,而不是
    JFrame
  • “我有多个JFrames中的JLabel…”1)请参见2)如需更快地获得更好的帮助,请发布一条消息。“我有多个JFrames中的JLabel…”1)请参见2)如需更快地获得更好的帮助,请发布一条消息。