我正在使用Swing框架在Java中编写我的第一个GUI应用程序。我使用JTextField,JPasswordField和JButton类编写了一个基本的登录系统。现在,我正在为该按钮编写actionPerformed方法,因为它们不再是必需的,所以我想删除这些项目,但我不确定实现此目的的最佳方式。Java GUI设计建议
我已经考虑过使用这些组件的setVisible方法,这似乎工作,但我敢肯定这不是它的首选方式。对不起,如果这是一个愚蠢的问题..
我正在使用Swing框架在Java中编写我的第一个GUI应用程序。我使用JTextField,JPasswordField和JButton类编写了一个基本的登录系统。现在,我正在为该按钮编写actionPerformed方法,因为它们不再是必需的,所以我想删除这些项目,但我不确定实现此目的的最佳方式。Java GUI设计建议
我已经考虑过使用这些组件的setVisible方法,这似乎工作,但我敢肯定这不是它的首选方式。对不起,如果这是一个愚蠢的问题..
让您的登录对话框与主窗口分开。完成登录后,只需隐藏登录对话框即可。
您还可以将文本字段和按钮保存到类字段中,并稍后调用remove(Component)。
是否建议setVisible或删除? – 2009-07-11 19:44:55
通常,您希望能够在一行代码中执行此操作。所以,你应该考虑包装你想要显示或隐藏在JPanel中的不同的东西。然后,您可以动态显示或隐藏JPanel。
我同意JPanel的建议。将登录组件添加到JPanel,然后在登录后隐藏JPanel。
我会建议你使用一个JDialog进行登录。成功登录后,您只需调用“dialog.dispose()”,然后加载您的界面。 如果您正在构建需要显示多个窗口的应用程序,你应该考虑使用的JDesktopPane(http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JDesktopPane.html)
你可以有一个登录的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);
删除它们是什么意思?你是否正在改变你唯一的屏幕? – akarnokd 2009-07-11 19:15:51
是的,这就是我试图去反正......这只是有点令人困惑,因为没有引用包含组件的实际JFrame。 – mportiz08 2009-07-11 19:31:39
你是否为你的应用使用了一些GUI编辑器,或者你只是手动编写它?你能告诉我们一些代码样本吗?在JFrame中总是有** ** ** – akarnokd 2009-07-11 19:38:11