1

Swing を使い始めたばかりです。私はそれを手に入れ始めています。

しかし、swing での画面ナビゲーションに関して質問がありました。

これが私がアプリを構成した方法です。

  • public class MainFrame は JFrame を拡張します
  • public class LoginPanel は JPanel を拡張します
  • public class HomeScreenPanel は JPanel を拡張します

メインフレームには次のコードがあります。

public class MainFrame extends JFrame {

    public MainFrame() {
        initUI();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MainFrame ex = new MainFrame();
                ex.setVisible(true);
            }
        });
    }

    private void initUI(){
        InputScreenPanel inputScreenPanel = new InputScreenPanel();
        getContentPane().add(inputScreenPanel);
        Dimension dim = new Dimension(400, 300);
        setMinimumSize(dim);
    }
}

LoginPanel では、画面を初期化し、ボタンとテキスト ボックスを追加します。ボタン クリック イベントのイベント ハンドラーを作成しました。テキストボックスから値を取得し、ユーザーを HomeScreenPanel にリダイレクトしたいと考えています。このボタンのクリックが実行されているときにパネルを切り替えるにはどうすればよいですか?コンテキストはLoginPanelであり、フレームへの参照がないため、パネルを切り替えることができます。

4

3 に答える 3

3

ここには2つのオプションがあると思います:

  1. InputScreenPanel を作成するときに、MainFrame オブジェクトをパラメーターとして渡すことができます。InputScreenPanel が MainFrame を認識していることに意味があるかどうかを自問する必要があります。場合によってはそうなるかもしれませんが、あなたの例に基づいて、私はノーと言って2番目のオプションを選びます。
  2. InputScreenPanel (または Model-View-Controller 設計を使用している場合はその背後にある任意のモデル構造) に対して、ある種のイベント ハンドラー構造を作成できます。ユーザーがログインすると、メインフレーム (または別のクラス) が応答できるイベントが作成されます。
于 2012-10-19T08:34:07.947 に答える
2

ログイン部分に JDialog を使用してから、新しい JFrame でアプリを起動する必要があります

于 2012-10-19T09:22:24.723 に答える
1

プログラムの個別の部分内の変更に対応できる、ある種のモデル/コントローラーを使用します。

このコントローラーをインターフェースして、アプリケーションの残りの部分に影響を与えずに実装を置き換えることができるようにします

基本的にこれは、ログイン ペインとホーム ペインがどのように表示されているかを気にしないことを意味します。

于 2012-10-19T09:19:52.753 に答える