我有以下情况:
我有一个Java Swing 应用程序。
在实现我的GUI的类中,我有一个名为注销的按钮,tath绑定到处理click事件的事件监听器,类似于:
JButton logOutButton = new JButton("LogOut");
header.add(logOutButton);
然后在实现我的GUI的同一个类中,我声明了使用内部类处理此事件的 ActionListener :
logOutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("logOutButton clicked !!!");
System.exit(0);
}
});
在我点击 logOutButton 按钮的那一刻,程序结束。我想通过运行一个名为 LoginForm 的特定类(实现登录表单GUI的类)来重新启动它
我该怎么做才能做到这一点?
TNX
安德烈
答案 0 :(得分:1)
你根本不需要close/open window
junky方法。只需使用Card Layout:
将Frame的内容窗格布局设置为卡片布局。
getContentPane().setLayout(new CardLayout());
将不同的Form内容代码放在不同的面板中 将它们添加到内容窗格及其对应的名称,例如:
getContetnPane().add(logInFormPanel, "logIn Form");
现在,您可以通过调用CardLayout.show(Container parent, String name)
模拟卡片,以便在需要时显示。例如:
logOutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("logOutButton clicked !!!");
CardLayout cl = (CardLayout)(getContentPane().getLayout());
cl.show(getContentPane(), "logIn Form");
}
});
从我的另一个答案中查看CardLayout
demo。