Java导航方法

时间:2012-03-16 09:40:55

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

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

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

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

  1. 当您启动它时,会出现一个登录屏幕和2个按钮(注册和登录)。
  2. 注册屏幕是一个基本的注册屏幕,它是相应的组件。
  3. 如果用户输入了正确的登录信息,他将看到包含一些数据的视图。
  4. 现在,我想为应用程序创建一个全局的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()方法之前,我都会删除之前的所有内容。 自从我读到Threads和MVC以来,我不确定这是一个好方法。另一方面,我的方法看起来非常简单,我不确定是否应该将它与多线程或MVC复杂化。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

revalidate();
repaint();

或者使用CardLayout将实际卡片放入必要的UI。