0

JavaのComponentクラスからsize()をオーバーライドすることはできませんか?

これは単純なクラスであり、myPanelsはコンストラクターで初期化されたArrayListです。

    /**
 * Returns number of panels
 */
@Override
public int size(){
    return myPanels.size();
}

エラー読み取り:戻りタイプはComponent.size()と互換性がありません



編集-ソリューション

解決策は、別のメソッド名を選択することでした。'size()'以外のものを使用

4

4 に答える 4

3

GUI コンポーネントのサイズを確実に変更する方法を見つけたい場合は、getPreferredSize()size または を処理する代わりにオーバーライドする必要がありますgetSize()。このようにして、コンポーネントはほとんどのレイアウト マネージャーで適切に機能します。

それ以外の場合、このメソッドを使用して保持する ArrayList のサイズを返し、コンポーネントの視覚化されたサイズを設定しようとしない場合は、クラスにこれを行うメソッドを与えますが、名前を付けないでくださいgetSize() 。他のコーダーとコンパイラーの両方を混乱させます。代わりに名前を付けgetMyPanelSize()たり、似たような名前を付けたりしてください。

于 2013-03-23T18:50:31.640 に答える
0

java.awt.Component.size()をオーバーライドしていると仮定します

A:Java 1.1以降は非推奨になりました。代わりに、getSize()を使用してください。

B:いずれにしても、ディメンションを返す必要があります

于 2013-03-23T18:43:58.503 に答える
0

size() は Dimension を返す必要があり、1.1 以降は非推奨です。

getSize() をオーバーライドしたいと思いますか?

Java 5.0 より前では、メソッドをオーバーライドする場合、パラメーターと戻り値の型の両方が正確に一致する必要がありました。Java 5.0 では、共変の戻り型と呼ばれる新しい機能が導入されています。同じシグネチャを持つメソッドをオーバーライドできますが、返されるオブジェクトのサブクラスを返します。つまり、サブクラスのメソッドは、スーパークラスの同じシグネチャを持つメソッドによって返される型のサブクラスである型を持つオブジェクトを返すことができます。

于 2013-03-23T18:45:01.870 に答える
0

Componentのsize()メソッドは型のオブジェクトを返しますDimension。つまり、int を返すことはできません。

アプローチは、メソッドに別の名前を付けることですpanelsSize()。もう 1 つは、 を返すことDimensionです。

于 2013-03-23T18:45:33.913 に答える