文档章节

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

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:56
字数 404
阅读 60
收藏 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
设计模式之观察者模式(行为型)

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

Javahih
07/22
0
0
20个设计模式和软件设计面试问题

不管是参加Java面试还是C#面试,设计模式和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎...

LCZ777
2014/08/13
0
0
JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52717096 JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模...

Aduroidpc
2016/10/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用xtrabackup完成远程备份

转载收藏,以防丢失 需求 Can I backup remote databases from my local server02-27-2013, 06:17 AMHi, I am using mysqldump so far for taking daily backups of my Production datab......

阿dai
2分钟前
0
0
OSChina 周五乱弹 —— 心情超级好开始乱删库

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 手机党少年们想听歌,请使劲儿戳(这里) 把生命除去上班时间, 都开心不起来。 @真Skr小机灵鬼儿: 你才不孤独呢, 想想你早起, @for。:这...

小小编辑
3分钟前
0
2
为什么你的python版本一团糟?因为少了这个操作

坑人的版本 Python 的版本问题一直是个广被吐槽的黑点。以至于有人调侃说: Python 是世界上最好的两种语言! 在这里我要说明下,对于初学者来说,版本间的语法差异其实并不大。现在刚开始学...

crossin
昨天
2
0
Cannot forward after response has been committed

声名:转载自CSDN 通过toncat启动服务器,可以正常登陆访问,登陆进去选择子系统的时候点击登陆的时候,可是去又回到了登陆界面,如此反复就是不能够进入子系统,查看后台报的错误: java.la...

小橙子的曼曼
昨天
2
0
shell编程(告警系统邮件引擎、运行告警系统)

告警系统邮件引擎 1.如果要使用邮件引擎功能,需要调用mail.py文件,放到/usr/local/sbin/mon/mail/目录下即可,具体内容如下: #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,s...

蛋黄_Yolks
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部