我在多个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
我认为原因是没有引用变量帧。
任何解决方案?
答案 0 :(得分:3)
您似乎正在将JFrame
扩展到某个类,但尝试在没有此类方法的超类getConsoleLabel()
上调用JFrame
。所以是的,无论这个实例的引用指的是哪种类型,你都无法在getConsoleLabel
的实例上调用JFrame
。而是声明自己的MyFrame extends JFrame
框架,其getConsoleLabel()
的实现更改vPrint
的签名,参数类型为MyFrame
,并将所需的MyFrame
类型的实例传递给{ {1}}。
并且不要像安德鲁建议的那样使用多个vPrint
。按照他的链接回答。
答案 1 :(得分:0)
您的专业JFrames
有[{1}}方法。
您有两种解决方案:
getConsoleLabel()
创建一个界面,并使所有getConsoleLabel()
实现该界面。并更改JFrame
的签名以接受您的界面实例,而不是vPrint
。JFrame
类,其中包含LabledFrame extends JFrame
并从中扩展所有getConsoleLabel()
,并更改JFrame
以接受{{1}的实例而不是vPrint
。