我是 Java 新手,我想知道哪种方法是创建应用程序导航的最佳方法。 我现在将解释我的应用程序功能和我选择的方法。
抛开所有网络和其他细节,我将专注于 GUI 部分,因为这就是我来这里的目的。
基本上我的应用程序执行以下操作:
- 启动后,您会看到一个登录屏幕和 2 个按钮(注册和登录)。
- 注册屏幕是一个基本的注册屏幕及其相应的组件。
- 如果用户输入正确的登录信息,他将看到一个包含一些数据的 View 。
现在,我想制作一个对于应用程序来说是全局的 JDialog/JFrame/Frame ,当用户单击按钮时,删除它以前的内容并“重新绘制”新组件。
我的注册屏幕的片段:
private JButton signUp;
private final JDialog parent;
.....
signUp = new JButton("Sign Up");
signUp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
parent.getContentPane().removeAll();
parent.validate();
parent.pack();
Account v = new Account(parent);
v.init();
}
});
// add all the components to the parent frame
parent.add(signUp);
.....
通过调用 Account v = new Account(parent);
我已经传递了全局框架(在我的例子中为 JDialog
),以便使用 v.init();
。
所以我的想法是:我的应用程序所需的所有“ View ”都应该有一个“父”字段(在调用构造函数时获取全局框架),我在其上添加我需要的组件。每次,在调用 View 的 .init()
方法之前,我都会删除之前的所有内容。
自从我读过有关 Threads 和 MVC 的内容后,我不确定这是否是一个好方法。另一方面,我的方法看起来非常简单,我不确定是否应该使用多线程或 MVC 使其复杂化。
通过使用我的方法,我成功地创建了一个非常灵活的 UI,我可以从任何 View “玩转”框架的属性(大小、焦点、启用等)。
注意:如果我还不够清楚,当我说“ View ”时,我指的是在创建时接收 parent
字段并使用 .init()
在我的父框架内添加内容。
编辑:我不需要你们提供任何代码,只是一条简单的建议。我这样做是因为我不想在应用程序的进一步开发过程中因为我的导航风格方法而遇到一些严重的问题。
最佳答案
您可以删除/读取新内容调用
revalidate();
repaint();
或者使用 CardLayout
显示具有必要 UI 的实际卡片。
关于Java导航方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734885/