0

どの JPanel を JFrame に出力するかを決定するクラスを作成しようとしています。JPanel は「addNew」と「searchPanel」です。addNew は「AddNew」というクラスによって作成され、ユーザーが新しいコンテンツをデータベースに追加できるようにするコンテンツ項目が含まれています。searchPanel パネルは、ユーザーがデータベース内のコンテンツを検索できるようにする別のクラス "SearchPanel" にあります。

2 つの JPanel が描画される JFrame は独自のクラスにあり、「新しい項目の追加」と「検索」の 2 つのボタンしかありません。これらのボタンのいずれかがクリックされるまで、JPanel は描画されません。

「buttonClick」に渡された値 (1 または 2) に応じて、switch ステートメントを介してどの JPanel が JFrame に描画されるかを決定する 3 番目のクラスがあります。

これまでの私のコード:

import Panels.AddNew;
import SearchWakili.SearchPanel;
import javax.swing.JPanel;

public class Redirect {
    public static JPanel panelRedirect = new JPanel();

    public static JPanel value;

    public static JPanel pageAddNewFunction () {
        AddNew addNew = new AddNew();
        panelRedirect.add(addNew);
        return panelRedirect;
    }

    public static JPanel SearchPanelFunction () {
        SearchPanel searchPanel = new SearchPanel();
        panelRedirect.add(searchPanel);
        return panelRedirect;
    }

    public static JPanel pageRedirect (int pageID) {
        switch (pageID) {
            case 1:
                value = pageAddNewFunction();
            break;
            case 2:
                value = SearchPanelFunction();
                break;
        }
        return value;

    }

}

コードは何もしません。ただし、コード エラー メッセージは表示されません。「リダイレクト」クラスを介してリダイレクトせずに直接呼び出すと、JPanels は正常に印刷されます。私が間違っているのは何ですか?独立したクラスを使用して、クリックされたボタンに応じて描画する JPanel を決定する他の方法はありますか?

事前にどうもありがとうございました。

おー!そして、私は CardLayout を使用したくありません。これを自分でコーディングする方法を学びたいと思います。

JFrame を描画するコードの一部:

import java.awt.Color;
import java.lang.ProcessBuilder.Redirect;
import javax.swing.JFrame;

public class FrameContainer {
    public static  JFrame Home;

    public static void createAndShowGUI() {
        // Create and set up the Frame
        JFrame.setDefaultLookAndFeelDecorated(true);

        Home = new JFrame();
        Home.setUndecorated(true);
        Home.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Home.setResizable(false);
        Home.setBounds(0, 0, 400, 400);
        Home.setBackground(Color.gray);

        // Redirect redirect = new Redirect();
        Home.add(Redirect.panelRedirect);

        // Display the window
        Home.pack();
        Home.setVisible(true);
    }
}

イベントを宣言するコードの一部:

public class Home {

    // The method that calls the type of JPanel (1) to be drawn
    private void mouseClickedAddNew(java.awt.event.MouseEvent evt) {                                    
        // FrameContainer.createAndShowGUI();
        Redirect.pageRedirect(1);
    }
}
4

1 に答える 1