文档章节

一个简单关于观察者模式的Swing GUI 例子

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:56
字数 404
阅读 69
收藏 0

这个例子展示了如何创建一个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)

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
私信 提问
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
编程中的那些套路——关于工厂模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(违反...

gzchen
08/27
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
为什么java中用枚举实现单例模式会更好

枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这...

zhoujy
2013/06/01
0
0
设计模式之观察者模式(行为型)

模式定义 观察者模式(Observer Pattern):观察者模式定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖的对象皆得到通知并且被自动更新。不过观察者只能知道目标...

Javahih
07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
4
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
4
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部