我正在为一些代码构建一个Java,并且我不太确定某些设计方面。
作为背景,GUI将只用于一个活动流。
我想知道的是-是否可以对GUI代码进行一些硬代码的设计,以便在加载文件之后,与按钮相关的事件从连接转换1改为2到3?
这些转换的功能是在另一个Java文件中实现的,我想知道这两者之间的分离/通信是如何工作的;或者我是否应该继续使用一个文件来涵盖使用GUI项执行的两个数学功能。
请随意问任何你认为能帮助你回答这个问题的问题。
发布于 2010-08-10 23:15:05
对模型-视图-控制器范例进行一些研究;它可能最适合您想要做的事情。
在当前的设置中,您编写的代码是模型。它包含应用程序的所有“业务逻辑”。您需要编写的是前端,视图和控制器。Controller充当视图和模型之间的中介;当您单击一个按钮(一个视图元素)时,关联的按钮处理程序(控制器)将通过调用某种方法委托给模型。例如
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像这样混在一起可能是好的(这个视图正在处理这个例子中的按钮按下)。
至于两者之间的沟通,我建议您让您的模型扩展可观察
public class Model extends Observable {
public void transform() {
// Do the transformation
// notify the view
setChanged();
notifyObservers();
}
}并使视图实现观察者
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();
}
}发布于 2010-08-10 23:06:26
我肯定会把GUI和数学分成不同的类。至于GUI,我建议不要因为正确的类设计而陷入太多的泥潭,只要尽可能简单地去做就行了。
https://stackoverflow.com/questions/3454141
复制相似问题