我想實現一個應用程序,其中我有兩個類(一個圖形和一個控制器)。 Mi的目的是爲了反映在圖形控制器類中發生的變化。我需要通過使用觀察者模式來完成它,但我不知道如何得到它...觀察者模式
假裝的工作如下: - 在圖形類中,我有三個我想要的JPanel在每個Panle之間以兩秒的間隔着色是彩色的。
現在我有以下代碼:
----------------------可觀察類---------- ----------------------------------
public class ImagenControl extends Observable{
private String panel1,panel2,panel3;
private int counter;
private Timer colorTimer;
private ActionListener colorListener=new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (counter==0){
panel1="yellow";
setChanged();
}
else if (counter==1){
panel2="blue";
setChanged();
}
else if (counter==2){
panel3="green";
setChanged();
}
if (counter==2)
colorTimer.stop();
else counter++;
}
};
public void giveColor(){
counter=0;
colorTimer=new Timer(2000,colorListener);
colorTimer.start();
}
--------- ------------------ Observer class ------------------------------ ----------
public class Imagen extends javax.swing.JFrame implements Observer{
public Imagen() {
initComponents();
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
ImagenControl ctr=new ImagenControl();
ctr.giveColor();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Imagen().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
// End of variables declaration
@Override
public void update(Observable o, Object o1) {
}
你會怎麼做?
在此先感謝!
在MVC中,控制器從未觀察到的一個,但觀察者。事件發生在GUI或模型上,Controller將更新從一個路由到另一個路由。 – 2012-07-12 18:22:37
這是一個功課練習嗎? – 2012-07-12 18:27:56