1

さまざまなクラスで書かれたさまざまな JPanels を持つプログラムがあります。ユーザーがクリックしたボタンに応じて、特定の JPanel を印刷したいと思います。

プログラムを起動すると、JFrame の「フレーム」に「Animals JButton」、「Plants JButton」、「Refresh JButton」の 3 つのボタンしかありません。JPanelはありません。

たとえば、ユーザーが「Animals JButton」をクリックすると、動物を含む JPanel が JFrame に出力されます。

「AnimalsJPanel」と「PlantsJPanel」は異なるクラスで記述されています。別のクラス「Pag​​eReturner」には、スイッチを介して何を出力するかを決定するメソッドがあります。

public class Redirect {

    String pageAnimals = "pageAnimals";
    String pagePlants = "pagePlants";

    String value;

    public String pageRedirect (String pageID) {
        switch (pageID) {
            case pageAnimals:
                value = (AnimalsJPanel animalsJPanel = new AnimalsJPanel());
            break;
            case pagePlants:
                value = (PlantsJPanel plantsJPanel = new PlantsJPanel());
                break;
            case 2:
                value = null;
                break;
        }
        return null;

    }

}

netbeans で「定数文字列式が必要です」および「互換性のない型」というエラーが発生します。私の switch ステートメントの問題は何でしょうか。印刷するページを決定するなど、これに対処するより良い方法はありますか。これをコーディングし、cardlayout を使用したくありません。私はJAVAが初めてで、クラスからオブジェクトを取得する方法を学ぼうとしています。

私のスイッチステートメントはうまくいっていますか?私はプログラミングを独学で学んでおり、相談できる人がいません。どんなアドバイスでも事前に感謝します

4

3 に答える 3

2

pageAnimalsandを static final として宣言pagePlantsします (定数の Java 規則に一致するように変数名が変更されていることに注意してください)。

static final String PAGE_ANIMALS = "pageAnimals";
static final String PAGE_PANTS = "pagePlants";

また、パネルをString次のように明示的にケース化する必要があります。

case PAGE_ANIMALS :
     value = (AnimalsJPanel animalsJPanel = new AnimalsJPanel()).toString();
     break;
case PAGE_PANTS :
     value = (PlantsJPanel plantsJPanel = new PlantsJPanel()).toString();
     break;
于 2013-08-09T08:52:49.557 に答える
1

JPanel オブジェクトを String に割り当てようとしていますが、それはできません!
値を次のように定義するJPanel value;か、書き込みますvalue = (AnimalsJPanel animalsJPanel = new AnimalsJPanel()).toString();

于 2013-08-09T09:30:45.620 に答える