1

クラスをJpanelのモデルとして設定したいのですが、Uniのイントロプログラミングクラスでこれを行いましたが、非常に洗練されていない実装でした。これを設定するための良い方法があると確信していますが、私はそれを知らない/忘れました。

以前に使用した方法は、モデルクラスをパラメーターとしてビュークラスに渡し、モデルを使用してインスタンスのタイプを判別し、このデータに基づいて特定のアイコンをGUIにロードすることでした。特定の場所にあるオブジェクトを常にチェックし、すべてをリロードする必要があるという点で、非常に非効率的です。

これはかなり簡単なはずですが、正しい答えが見つかりませんでした。どんな助けでもいただければ幸いです。

4

3 に答える 3

2

JPanelのモデルとしてクラスを設定したい。

素晴らしい。それはまさにすべてのGUIプログラマーがすべきことです。

以前に使用した方法は、モデルクラスをパラメーターとしてビュークラスに渡し、モデルを使用してインスタンスのタイプを判別し、このデータに基づいて特定のアイコンをGUIにロードする方法でした。

あなたは正しい考えを持っています。モデルインスタンスをGUIコンポーネントに渡して、モデルの各部分にアクセスできるようにする必要があります。

ここでの特定のケースでは、モデルに各アイコンを取得するメソッドが含まれている必要があり、GUIコンポーネントは、そのコンポーネントに適したgeticonモデルメソッドを呼び出します。

一般に、JPanelにテキストとボタンのコンポーネントがある場合、モデルにはそれらのテキストとボタンのコンポーネントのコンテンツが含まれている必要があります。JPanelにJTreeなどの独自のデータモデルを持つコンポーネントがある場合は、モデルクラスにDefaultTreeModelを保持できます。

必要に応じて、GUI内のすべてのJPanelのモデルクラスを作成できます。一般に、論理的であるようにGUIモデルを構築します。

これが私の他の答えの1つからの実際の例です:スピログラフGUI

于 2013-03-17T01:03:32.790 に答える
0

JPanelほとんどの場合、実際には「コンテナ」として使用さModelれ、インスタンスJTableJList

于 2013-03-16T21:09:27.040 に答える
0

彼らが言ったように、JPanel にはモデルがありません。

ただし、これを試して偽造するために使用できるシード コードを次に示します。

public abstract class GPanelModel {
    abstract public void setWhatEver();
    abstract public void getWhatEver();
    abstract public void doWhatEver();
}

public class GPanel<T extends GPanelModel> extends JPanel {
    final T t;
    public GPanel(final T model) {
        t = model;
    }
    public T getModel() {
        return t;
    }
}
于 2013-03-16T21:39:34.240 に答える