我正在使用Swing框架在Java中编写我的第一个GUI应用程序。我使用JTextField,JPasswordField和JButton类编写了一个基本的登录系统。现在,我正在为按钮编写actionPerformed方法,我想删除这些项目,因为它们不再需要,但我不确定实现此目的的最佳方法。
我考虑过使用这些组件的setVisible方法,这似乎有效,但我确信这不是首选方法。对不起,如果这是一个愚蠢的问题..
答案 0 :(得分:5)
将登录对话框与主窗口分开。完成登录后,只需隐藏登录对话框即可。
您还可以将文本字段和按钮保存到类字段中,稍后再为每个字段调用remove(Component)。
答案 1 :(得分:1)
通常,您希望能够在一行代码中执行此操作。因此,您应该考虑将您想要显示或隐藏的不同内容包装在JPanel中。然后,您可以动态显示或隐藏JPanel。
答案 2 :(得分:1)
您可以设置并显示登录JPanel,一旦验证了用户密码,您就可以显示您的应用程序JPanel。这可以使用CardLayout
轻松完成。
它将容器中的每个组件视为卡片。一次只能看到一张卡片,而容器则充当一叠卡片。
使用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);
答案 3 :(得分:0)
我同意JPanel的建议。将登录组件添加到JPanel,然后在登录后隐藏JPanel。
答案 4 :(得分:0)
我建议你使用JDialog登录。成功登录后,您只需调用“dialog.dispose()”然后加载您的界面。 如果您正在构建的应用程序需要显示多个窗口,则应考虑使用JDesktopPane(http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JDesktopPane.html)