【问题标题】:Java navigation approachJava 导航方式
【发布时间】:2012-03-16 09:40:54
【问题描述】:

我是 Java 新手,我想知道创建应用导航的最佳方法。 我现在将解释我的应用功能和我选择的方法。

抛开所有网络和其他细节,我将专注于 GUI 部分,因为这就是我来这里的目的。

基本上我的应用程序执行以下操作:

  1. 当您启动它时,您会看到一个登录屏幕和 2 个按钮(注册和登录)。
  2. 注册屏幕是一个带有相应组件的基本注册屏幕。
  3. 如果用户输入正确的登录信息,他将看到一个包含一些数据的视图。

现在,我想为应用创建一个全局的 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();“重新填充”其他内容。 所以我的想法是:我的应用程序需要的所有“视图”都应该有一个“父”字段(在调用构造函数时获取全局框架),我在该字段上添加我需要的组件。每次在调用.init() 方法获取视图之前,我都会删除之前的所有内容。 我不确定这是一个好方法,因为我阅读了有关线程和 MVC 的信息。另一方面,我的方法似乎很简单,我不确定是否应该使用多线程或 MVC 使其复杂化。

通过使用我的方法,我设法制作了一个非常灵活的 UI,我可以从任何视图“玩”框架的属性(大小、焦点、启用等)。

注意:如果我不够清楚,当我说“视图”时,我指的是在创建时接收parent 字段并使用.init() 在我的父框架内添加内容的类。

编辑:我不需要你们提供任何代码,只是一个简单的建议。我这样做是因为我不希望在应用程序的进一步开发中遇到一些严重的问题,因为我在导航样式上的方法。

【问题讨论】:

  • "JAVA 导航方法..我是 Java 新手" 请注意 Java 只有 1 个大写字母。它不是缩写词或首字母缩略词。
  • 顺便说一句:这个网站不能很好地处理代码格式中的制表符,并且被空格和制表符的混合完全混淆 - 结果是难以阅读的混乱。可能是获得帮助的障碍;-)

标签: java multithreading swing model-view-controller navigation


【解决方案1】:

您可以删除/读取新内容调用

revalidate();
repaint();

或者使用CardLayout展示带有必要UI的真实卡片。

【讨论】:

  • 我的方法怎么样?有那么糟糕吗?如果是这样,我不介意改变它并关注你的。
猜你喜欢
  • 2012-06-30
  • 2015-10-12
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 2017-10-27
  • 2011-09-03
相关资源
最近更新 更多