0

以下で説明するものを作成するにはどうすればよいですか?

まず、私の GUI の基本的な外観は次のとおりです。

ここに画像の説明を入力

をクリックするAdd New Accountと、GUI に小さなウィンドウが表示され、ユーザーがログイン資格情報を入力できるようになります。この情報をメイン GUI に戻す必要があるため、これにアプローチする方法がわかりません。

Preferencesまたはについても同様Remove Accountです。ある種の「GUI オーバーレイ」を作成するにはどうすればよいですか。申し訳ありませんが、探しているエフェクトの正しい用語がわかりません。

を使用したかったJOptionPaneのですが、いくつかの調査の結果、これは取るべきルートではないように思われました。

JFrameアクションが実行されたときに新しいものを作成するというアイデアもいじっていました。これにはどのようにアプローチする必要がありますか?

4

1 に答える 1

3

フレーム上でダイアログを使用することから始めます。ダイアログは、ユーザーから小さな情報を収集するように設計されています。

実行する操作ごとに個別のコンポーネントを作成します。これらのコンポーネント内で、コンポーネントによって管理される情報にアクセスできるようにセッターとゲッターを提供します。

そこから、JOptionPaneまたはJDialogを使用してコンポーネントをユーザーに表示します。私がどちらか一方を使用する理由は、アクションボタンを制御できるようになるためです(OkayたとえばCancel)。Loginログインダイアログのようなものについては、ユーザーが試行するのに十分な情報を提供するまで、ボタンを押すことができないように制限したいと考えています。

基本的なフォローは次のようなものになります...

LoginDialog dialog = new LoginDialog(SwingUtilities.getWindowAncestor(this)); // this is a reference any valid Component
dialog.setModal(true); // I would have already done this internally to the LoginDialog class...
dialog.setVisible(true); // A modal dialog will block at this point until the window is closed
if (dialog.isSuccessfulLogin()) {
    login = dialog.getLogin(); // Login is a simple class containing the login information...
}

このLoginDialogようなものに見えるかもしれません...

public class LoginDialog extends JDialog {
    private LoginPanel loginPane;
    public LoginDialog(Window wnd) {
        super(wnd);
        setModal(true);
        loginPane = new LoginPanel();
        setLayout(new BorderLayout());
        add(loginPane);
        // Typically, I create another panel and add the buttons I want to use to it.
        // These buttons would call dispose once they've completed there work
    }

    public Login getLogin() {
        return loginPane.getLogin();
    }

    public boolean isSuccessfulLogin() {
        return loginPane.isSuccessfulLogin();
    }
}

ダイアログは、単にログイン ペインのプロキシ/コンテナとして機能しています。

もちろん、これは概要です。空白を埋める必要があります;)

独自のダイアログを作成する手間をかけたくない場合は、JOptionPane代わりに を利用できます。

LoginPanel loginPane = new LoginPanel();
int option = JOptionPane.showOptionDialog(
     this, // A reference to the parent component
     loginPane,
     "Login", // Title
     JOptionPane.YES_NO_OPTION,
     JOptionPane.QUESTION_MESSAGE,
     null, // You can supply your own icon it if you want
     new Object[]{"Login", "Cancel"}, // The available options to the user
     "Login" // The "initial" option
     );
if (option == 0) {
    // Attempt login...
}
于 2012-12-04T00:15:03.677 に答える