JavaGUI设计建议

JavaGUI设计建议,java,user-interface,swing,Java,User Interface,Swing,我正在使用Swing框架用Java编写我的第一个GUI应用程序。我已经使用JTextField、JPasswordField和JButton类编写了一个基本的登录系统。现在,我正在为按钮编写actionPerformed方法,我想删除这些项,因为它们不再是必需的,但我不确定实现这一点的最佳方法 我考虑过使用这些组件的setVisible方法,这似乎是可行的,但我确信这不是最好的方法。如果这是一个有点愚蠢的问题,很抱歉。将登录对话框与主窗口分开。完成登录后,只需隐藏登录对话框 您还可以将文本字段和

我正在使用Swing框架用Java编写我的第一个GUI应用程序。我已经使用JTextField、JPasswordField和JButton类编写了一个基本的登录系统。现在,我正在为按钮编写actionPerformed方法,我想删除这些项,因为它们不再是必需的,但我不确定实现这一点的最佳方法


我考虑过使用这些组件的setVisible方法,这似乎是可行的,但我确信这不是最好的方法。如果这是一个有点愚蠢的问题,很抱歉。

将登录对话框与主窗口分开。完成登录后,只需隐藏登录对话框


您还可以将文本字段和按钮保存到类字段中,然后为每个字段调用remove(Component)。

通常,您希望能够在一行代码中完成此操作。所以,你应该考虑包装你想在JPAND中显示或隐藏的不同的东西。然后,您可以动态显示或隐藏JPanel。

我同意JPanel的建议。将登录组件添加到JPanel,然后在登录后隐藏JPanel。

我建议您使用JDialog进行登录。成功登录后,只需调用“dialog.dispose()”,然后加载界面。
如果你正在构建的应用程序需要显示多个窗口,你应该考虑使用JDekTopPANE()

> P>你可以有一个登录JPAND,它被设置并显示,一旦验证了用户的密码,你就可以显示你的应用程序JPanel。这可以很容易地用一个简单的方法来完成

它将容器中的每个组件视为一张卡片。一次只能看到一张卡,容器充当一堆卡

使用CardLayout,您的代码可能如下所示:

实例变量:

static final String LOGINPANEL = "LOGINPANEL";
static final String MAINPANEL = "MAINPANEL";
JPanel cards;
创建面板的位置:

JPanel loginPanel = new JPanel();
//add your stuff to the login panel
JPanel mainPanel = new JPanel();  
//add your stuff to the main panel

cards = new JPanel(new CardLayout());
cards.add(loginPanel, LOGINPANEL); 
cards.add(mainPanel, MAINPANEL);
然后,在AWT线程中验证密码后,可以执行以下操作:

CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, MAINPANEL);

你移除它们是什么意思?你是不是在故意改变你唯一的屏幕?是的,这正是我想做的……这有点让人困惑,因为没有引用包含组件的实际JFrame。你是在为你的应用程序使用GUI编辑器,还是只是手动编写?你能给我们看一些代码示例吗?JFrame中始终存在此问题如果更改JFrame的内容,它将隐式地重新绘制()-ed。一旦用户单击成功的日志,则隐藏“登录”面板这与上面所述的JDialog逻辑相同。。。有一个单独的JPanel用于登录,然后在用户成功登录后将其隐藏。我发现这对用户来说更容易,因为屏幕上没有打开任何单独的窗口。希望这次修订有帮助!建议设置可见还是删除?我赞成分离。我的登录通常是一个弹出式模式对话框。我很少需要更改jpanel的内容,这会给布局管理带来麻烦。如果您使用对话框(请参见JDialog),则通常会在完成后处理它