首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java构建技巧?

Java构建技巧?
EN

Stack Overflow用户
提问于 2010-08-10 22:58:39
回答 2查看 1.1K关注 0票数 2

我正在为一些代码构建一个Java,并且我不太确定某些设计方面。

作为背景,GUI将只用于一个活动流。

  • 用户加载一个文件,该文件出现在屏幕上,用户每次按一个按钮表示是/否答案后,都会显示数学转换1、转换2和转换3的效果。

我想知道的是-是否可以对GUI代码进行一些硬代码的设计,以便在加载文件之后,与按钮相关的事件从连接转换1改为2到3?

这些转换的功能是在另一个Java文件中实现的,我想知道这两者之间的分离/通信是如何工作的;或者我是否应该继续使用一个文件来涵盖使用GUI项执行的两个数学功能。

请随意问任何你认为能帮助你回答这个问题的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 23:15:05

模型-视图-控制器范例进行一些研究;它可能最适合您想要做的事情。

在当前的设置中,您编写的代码是模型。它包含应用程序的所有“业务逻辑”。您需要编写的是前端,视图和控制器。Controller充当视图和模型之间的中介;当您单击一个按钮(一个视图元素)时,关联的按钮处理程序(控制器)将通过调用某种方法委托给模型。例如

代码语言:javascript
复制
public class View extends JPanel implements ActionListener {

  JButton transform = new JButton("Transform1");
  Model m;
  public View(Model m) {
       super();
       this.m = m;
       transform.setActionListener(this);
       // lay out the GUI
       setLayout(...);
       add(// whatever view you need to visualize the data);
       add(transform);
  }

  /**
   Make sure all of the GUI elements are correct */
  public void update() {
    State transformState = m.getTransformState();
    transform.setText(transformState.getNextStateDescription());

    // Draw the state of the file they loaded in, probably to another JPanel
  }

  public void actionPerformed(ActionEvent e) {
    m.transform();
  }

}

在一些小的例子中,让View和Controller像这样混在一起可能是好的(这个视图正在处理这个例子中的按钮按下)。

至于两者之间的沟通,我建议您让您的模型扩展可观察

代码语言:javascript
复制
public class Model extends Observable {
    public void transform() {

       // Do the transformation

       // notify the view
       setChanged();
       notifyObservers();
    }
}

并使视图实现观察者

代码语言:javascript
复制
public class View implements ActionListener, Observer {

    public View(Model m) {
            // snip
            m.addObserver(this);
    }

    public void     update(Observable o, Object arg) {
        // Delegate to previously defined method
        update();
    }

}
票数 3
EN

Stack Overflow用户

发布于 2010-08-10 23:06:26

我肯定会把GUI和数学分成不同的类。至于GUI,我建议不要因为正确的类设计而陷入太多的泥潭,只要尽可能简单地去做就行了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3454141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档