java - 多个组件的方法无效

标签 java swing casting components jlabel

代码已被大大简化,仅突出显示问题。我也不确定这是否是解决此问题的最佳方法。

我正在尝试创建一个可以具有任何单个 Swing 组件和一组编辑该组件的通用方法的对象。在本例中,如果组件是 JLabel,则有一个方法设置组件文本并返回是否成功。

package table;

import java.awt.Component;

public class CompTest
{
    private Component comp;
    public CompTest(Component C)
    {
        comp=C;
    }

    public boolean setText(String S)
    {
        if(comp instanceof javax.swing.JLabel)
        {
            comp.setText(S); //error
            return true;
        }
        return false;
    }
}

该对象的创建方式类似于;

...
CompTest comp1=new CompTest(new javax.swing.JLabel());
...

我使用的是 Netbeans IDE 7.2,并且在包含“//error”的行(在第一个代码块中)出现错误;

cannot find symbol
 symbol: method setText(String)
 location: variable comp of type Component

我该如何解决这个问题,如果没有(我对此表示怀疑)如何让 Netbeans 正常运行?

最佳答案

Component 没有名为 setText 的方法。

您必须首先将 comp 转换为 JLabel,然后才能调用该方法,例如:

((javax.swing.JLabel)comp).setText(S);

关于java - 多个组件的方法无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14355086/

相关文章:

java - 我应该如何在 Spring Integration 中构建消息?

java - 如果声明但未初始化对象的变量是否会使用内存空间?

java - 使用容器在 Java Swing 中重新绘制

c++ - 带有不相关类的 static_cast

php - 将带有数字键的数组转换为对象

java - 使用 Spring Security 5 在 Issuer Resolver 之后从 Bearer Token 中提取身份验证

java - 为什么 getMetadata() 不适用于 javafx 中的 m4a 文件?

java - 如何从 Swing Worker 运行服务执行器?

Java Swing : Layout Manager like "North" in BorderLayout needed

java - 重复类型转换