这个例子展示了如何创建一个Swing GUI 例子,并解释他为什么是一个观察者模式使用者。 完成代码
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class SimpleSwingExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame Title");
final JTextArea comp = new JTextArea();
JButton btn = new JButton("click");
frame.getContentPane().add(comp, BorderLayout.CENTER);
frame.getContentPane().add(btn, BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
comp.setText("Button has been clicked");
}
});
int width = 300;
int height = 300;
frame.setSize(width, height);
frame.setVisible(true);
}
}
逐步解释
首先,我们需要一个容器像框架(Frame),窗口(Window),应用(Applet)去显示组件如面板(panels),按钮(buttons),文本域(text area)等等
JFrame frame = new JFrame("Frame Title");
创建一些组件像 panels,buttons, text areas等等。
final JTextArea comp = new JTextArea();
JButton btn = new JButton("click");
增加组件去显示文本,并通过布局管理器安排布局
frame.getContentPane().add(comp,BorderLayout.CENTER);
frame.getContentPane().add(btn, BorderLayout.SOUTH);
给button附加一个监听器。与组件互动产生一个事件,联系用户的动作与组件,附加一个监听器给她。 这个 addActionListener方法是主体的注册观察者方法,像看一个简单的观察者模式,去 观察者模式例子
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
comp.setText("Button has been clicked");
}
});
这个监听器借口接受动作事件。有兴趣处理动作事件的类(这里是Main)实现这个接口,用那个类创建的对象使用组件的addActionListener方法注册给组件,当动作事件发送,这个对象动作执行执法将被唤醒。 Frame展示
int width = 300;
int height = 300;
frame.setSize(width, height);
frame.setVisible(true)