多个组件的方法无效

时间:2013-01-16 09:31:47

标签: 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玩得很好?

3 个答案:

答案 0 :(得分:4)

将其投放到JLabel

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

答案 1 :(得分:4)

班级Component没有名为setText的方法。

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

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

答案 2 :(得分:0)

因为comp.setText(S); //error不可用

尝试comp.setName()