Scala深入浅出进阶经典 第72讲:Scala界面事件处理编程实战详解

package com.dt.scalaInAction.demo_072
import scala.swing._
import scala.swing.event.ButtonClicked
/**
 * Scala界面事件处理编程实战详解
 */
object CUI_Panel_Layout extends SimpleSwingApplication { 
    def top = new MainFrame {
        title = "Second GUI"
        val button = new Button {
           text = "Scala"
        }
        var label = new Label {
           text = "Here is Spark!!!"
        }
        //定义容器内部组件
        contents = new BoxPanel(Orientation.Vertical){
            contents += button
            contents += label
            border = Swing.EmptyBorder(50, 50, 50, 50)
        }
        
        /**
         * Source:
         *  trait Reactor {
              val reactions: Reactions = new Reactions.Impl
              def listenTo(ps: Publisher*) = for (p <- ps) p.subscribe(reactions)
              def deafTo(ps: Publisher*) = for (p <- ps) p.unsubscribe(reactions)
            }
         */
        //事件监听
        listenTo(button)
        var clicks = 0
        //reactions方法是用于对事件进行处理 +=函数添加对应的事件处理 -=函数除去对应的事件处理
        /**
         * source:
         * abstract class Reactions extends Reactions.Reaction {
              def += (r: Reactions.Reaction): this.type
              def -= (r: Reactions.Reaction): this.type
          }
         */
        reactions += {
            //通过模式匹配出合适的事件源 可以匹配多种事件源
            case ButtonClicked(button) => {
                clicks += 1
                label.text = "Clicked" + clicks + " times"
            } 
        }
        
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值