0

問題のみを強調するために、コードは大幅に単純化されています。これがこの問題に取り組む最善の方法であるかどうかもわかりません。

単一のスイング コンポーネントと、コンポーネントを編集するための一連の汎用メソッドを持つことができるオブジェクトを作成しようとしています。この場合、コンポーネントが 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 をうまく動作させるにはどうすればよいですか?

4

3 に答える 3

4

キャストするJLabel

((javax.swing.JLabel)comp).setText(S);
于 2013-01-16T09:33:31.943 に答える
4

このクラスComponentには、 というメソッドがありませんsetText

comp最初に JLabelにキャストする必要があり、次にメソッドを呼び出すことができます。

((javax.swing.JLabel)comp).setText(S);
于 2013-01-16T09:34:29.273 に答える
0

comp.setText(S); //error利用できないため

試すcomp.setName()

于 2013-01-16T09:35:09.840 に答える