2009-07-11 188 views
3

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

我已经考虑过使用这些组件的setVisible方法,这似乎工作,但我敢肯定这不是它的首选方式。对不起,如果这是一个愚蠢的问题..

+0

删除它们是什么意思?你是否正在改变你唯一的屏幕? – akarnokd 2009-07-11 19:15:51

+0

是的,这就是我试图去反正......这只是有点令人困惑,因为没有引用包含组件的实际JFrame。 – mportiz08 2009-07-11 19:31:39

+0

你是否为你的应用使用了一些GUI编辑器,或者你只是手动编写它?你能告诉我们一些代码样本吗?在JFrame中总是有** ** ** – akarnokd 2009-07-11 19:38:11

回答

5

让您的登录对话框与主窗口分开。完成登录后,只需隐藏登录对话框即可。

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

+0

是否建议setVisible或删除? – 2009-07-11 19:44:55

1

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

0

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

1

你可以有一个登录的JPanel,这是建立和显示,一旦用户的密码验证,则可以显示你的应用程序JPanel。这可以使用CardLayout轻松完成。

它将容器中的每个组件视为卡片。一次只能看到一张卡片,容器就像一叠卡片一样。

Here is a tutorial

使用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);