Java GUI,多个框架

我如何创建下面描述的内容?

首先,这是我的GUI的基本外观:

在此处输入图像描述

当我点击Add New Account我希望GUI弹出一个小窗口,用户可以在其中输入登录凭据。 我需要将这些信息传递回主GUI,所以我迷失了如何处理这个问题。

PreferencesRemove Account 。 我如何创建各种“GUI叠加”。 对不起,我无法弄清楚我正在寻找的效果的正确术语。

我想尝试使用JOptionPane ,但经过一些研究后,这似乎不是要采取的路线。

我还想要在执行动作时创建一个新的JFrame 。 该如何处理?

首先使用框架上的对话框。 对话框旨在从用户收集小块信息。

我会为您要执行的每个操作创建一个单独的组件。 在这些组件中,我将提供setter和getter,以允许您访问组件管理的信息。

从那里我将使用JOptionPaneJDialog向用户显示组件。 对我来说使用one over another的原因归结为开始能够控制动作按钮(例如OkayCancel )。 对于像登录对话框这样的东西,我想限制用户开始能够点击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... }