做一些研究Model-View-Controller範式;它可能最適合你想要做的事情。
在您當前的設置中,您編寫的代碼是模型。它包含了應用程序的所有'業務邏輯'。你需要寫的是前端,視圖和控制器。控制器充當View和Model之間的中介;當你點擊一個按鈕(一個視圖元素)時,相關的按鈕處理程序(控制器)將通過調用某種方法委託給該模型。例如
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();
}
}
在小例子中,可能很好地讓視圖和控制器混合在一起(視圖處理本例中的按鈕按下)。
至於兩者之間的溝通,我會建議是,你讓你的模型擴展Observable
public class Model extends Observable {
public void transform() {
// Do the transformation
// notify the view
setChanged();
notifyObservers();
}
}
,使觀落實Observer
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();
}
}
這看起來很有希望,我會研究它。 – sparkFinder 2010-08-11 00:22:22