日期:2014-05-20 浏览次数:20900 次
package Test;
public class Clinet {
public static void main(String[] args) {
IntervalWindow Iw= new IntervalWindow();
Interval i=new Interval();
i.addObserver(Iw);
}
}
package Test;
import java.util.Observable;
public class Interval extends Observable {
public String start = "0";
public String end = "0";
public String length = "0";
public void calculatestart(String start, String end) {
this.start = start;
this.end = end;
this.length = String.valueOf(Integer.parseInt(start)
- Integer.parseInt(end));
setChanged();
notifyObservers();
}
public void calculateend(String start, String end) {
this.start = start;
this.end = end;
this.length = String.valueOf(Integer.parseInt(start)
- Integer.parseInt(end));
setChanged();
notifyObservers();
}
public void calculatelength(String start, String length) {
this.start = start;
this.length = length;
this.end = String.valueOf(Integer.parseInt(start)
- Integer.parseInt(length));
setChanged();
notifyObservers();
}
}
package Test;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class IntervalWindow extends JFrame implements Observer {
JTextField start = new JTextField("0", 10);
JTextField end = new JTextField("0", 10);
JTextField length = new JTextField("0", 10);
GridLayout fl = new GridLayout(3, 1);
public IntervalWindow() {
super("测试观察者模式在GUI中的使用");
this.setSize(400, 400);
this.setLocation(500, 100);
this.setBackground(Color.WHITE);
this.setLayout(fl);
this.add(start);
this.add(end);
this.add(length);
start.addFocusListener(new SymFocus());
end.addFocusListener(new SymFocus());
length.addFocusListener(new SymFocus());
this.setVisible(true);
}
class SymFocus extends FocusAdapter {
private String tf_start;
private String tf_end;
private String tf_length;
private Interval interval = new Interval();
@Override
public void focusLost(FocusEvent event) {
Object obj = event.getSource();
if (obj == start) {
tf_start = start.getText();
tf_end = end.getText();
interval.calculatestart(tf_start, tf_end);
} else if (obj == end) {
tf_start = start.getText();
tf_end = end.getText();
interval.calculateend(tf_start, tf_end);
} else if (obj == length) {
tf_start = start.getText();
tf_length = length.getText();
interval.calculatelength(tf_start, tf_length);
}
}
}
@Override
public void update(Observable o, Object arg1) {
System.out.println("her");
start.setText(((Interval) o).start);
end.setText(((Interval) o).end);
length.setText(((Interval) o).length);
}
}