<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    First they ignore you
    then they ridicule you
    then they fight you
    then you win
        -- Mahatma Gandhi
    Chinese => English     英文 => 中文             
    隨筆-221  評論-1047  文章-0  trackbacks-0
    最近一直很忙,為了放松放松,自己就用Groovy寫了個(gè)計(jì)算器玩玩,順便也給還不太了解Groovy中SwingBuilder的朋友展示一下SwingBuilder的用法。

    注意:請使用最新版本的Groovy,否則顯示有問題


    運(yùn)行結(jié)果:



    /*
    ?*?Copyright?2007?the?original?author?or?authors.
    ?*?
    ?*?Licensed?under?the?Apache?License,?Version?2.0?(the?"License");
    ?*?you?may?not?use?this?file?except?in?compliance?with?the?License.
    ?*?You?may?obtain?a?copy?of?the?License?at
    ?*?
    ?*??????
    http://www.apache.org/licenses/LICENSE-2.0
    ?*?
    ?*?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software
    ?*?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS,
    ?*?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied.
    ?*?See?the?License?for?the?specific?language?governing?permissions?and
    ?*?limitations?under?the?License.
    ?
    */

    package ?edu.ecust.swing

    import ?groovy.swing. *
    import ?javax.swing. *
    import ?java.awt. *

    /**
    ?*?Groovy?Calculator?for?studying?SwingBuilder
    ?*?
    ?*?
    @author ?Daniel?Sun(realbluesun@hotmail.com)
    ?*
    ?*?
    @since ?0.1
    ?
    */

    class ?GroovyCalculator?{
    ????def?swing?
    = ? new ?SwingBuilder()
    ????JFrame?frame
    ????def?toolkit?
    = ?Toolkit.getDefaultToolkit()
    ????def?screenSize?
    = ?toolkit.getScreenSize()
    ????
    ????
    ????def?WIDTH?
    = ? 320
    ????def?HEIGHT?
    = ? 200
    ????
    int ?X? = ?(screenSize.width? - ?WIDTH)? / ? 2
    ????
    int ?Y? = ?(screenSize.height? - ?HEIGHT)? / ? 2
    ????
    ????
    boolean ?flag? = ? false
    ????
    ????
    private ? void ?run()?{
    ????????UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
    ????????frame?
    = ?swing.frame(title:? ' Demo ' ,
    ????????????????????????????size:?[WIDTH,?HEIGHT],
    ????????????????????????????location:?[X,?Y],
    ????????????????????????????defaultCloseOperation:?javax.swing.WindowConstants.DISPOSE_ON_CLOSE)?{
    ????????????

    ????????????
    ????????????panel(layout:?
    new ?BorderLayout())?{
    ????????????????textField(id:?
    " expr " ,?constraints:?BorderLayout.NORTH)
    ????????????????
    ????????????????panel(constraints:?BorderLayout.CENTER)?{
    ????????????????????tableLayout?{
    ????????????????????????tr?{
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 7 " )?{
    ????????????????????????????????????action(getAction(
    " 7 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 8 " )?{
    ????????????????????????????????????action(getAction(
    " 8 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 9 " )?{
    ????????????????????????????????????action(getAction(
    " 9 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " / " )?{
    ????????????????????????????????????action(getAction(
    " / " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????}
    ????????????????????????tr?{
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 4 " )?{
    ????????????????????????????????????action(getAction(
    " 4 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 5 " )?{
    ????????????????????????????????????action(getAction(
    " 5 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 6 " )?{
    ????????????????????????????????????action(getAction(
    " 6 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " * " )?{
    ????????????????????????????????????action(getAction(
    " * " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????}
    ????????????????????????tr?{
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 1 " )?{
    ????????????????????????????????????action(getAction(
    " 1 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 2 " )?{
    ????????????????????????????????????action(getAction(
    " 2 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 3 " )?{
    ????????????????????????????????????action(getAction(
    " 3 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " - " )?{
    ????????????????????????????????????action(getAction(
    " - " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????}
    ????????????????????????tr?{
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " 0 " )?{
    ????????????????????????????????????action(getAction(
    " 0 " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " = " )?{
    ????????????????????????????????????action(name:
    " = " ,?closure:? this . & eval)
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " C " )?{
    ????????????????????????????????????action(name:
    " C " ,?closure:? this . & clear)
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????????td?{
    ????????????????????????????????button(text:
    " + " )?{
    ????????????????????????????????????action(getAction(
    " + " ))
    ????????????????????????????????}
    ????????????????????????????}
    ????????????????????????}
    ????????????????????}
    ????????????????}
    ????????????}
    ????????}
    ????????
    ????????swing.expr.setEditable(
    false )
    ????????swing.expr.setHorizontalAlignment(JTextField.RIGHT)
    ????????swing.expr.setBackground(Color.WHITE)
    ????????
    ????????frame.pack()
    ????????frame.setResizable(
    false )
    ????????frame.setVisible(
    true )
    ????}
    ????
    ????
    private ? void ?append(EventObject?evt? = ? null )?{
    ????????
    if ?(flag)?{
    ????????????swing.expr.text?
    = ? ""
    ????????????flag?
    = ? false
    ????????}
    ????????
    ????????String?name?
    = ?evt.source.text
    ????????swing.expr.text?
    <<= ?name
    ????????swing.expr.text?
    = ?swing.expr.text.replaceAll( " // " ,? " / " )
    ????}
    ????
    ????
    private ? void ?clear(EventObject?evt? = ? null )?{
    ????????swing.expr.text?
    = ? ""
    ????}
    ????
    ????
    private ? void ?eval(EventObject?evt? = ? null )?{
    ????????String?expr?
    = ?swing.expr.text
    ????????
    ????????def?b
    = ? new ?Binding()
    ????????def?conf
    = new ?org.codehaus.groovy.control.CompilerConfiguration()
    ????????conf.setSourceEncoding(
    ' unicode ' )
    ????????def?groovyShell?
    = ? new ?GroovyShell(b,conf)
    ????????
    ????????
    try ?{
    ????????????swing.expr.text?
    = ?groovyShell.evaluate(expr)
    ????????}?
    catch ?(Throwable?t)?{
    ????????????swing.expr.text?
    = ? " invalid?expression! "
    ????????????flag?
    = ? true
    ????????}
    ????????
    ????}
    ????
    ????def?getAction(name)?{
    ????????
    return ?swing.action(name:name,?closure:? this . & append)
    ????}
    ????
    ????
    static ? void ?main(args)?{
    ????????
    new ?GroovyCalculator().run()
    ????}

    }


    附:朝花夕拾——Groovy & Grails
    posted on 2007-08-05 20:52 山風(fēng)小子 閱讀(6154) 評論(17)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 在线看亚洲十八禁网站| 又粗又黄又猛又爽大片免费| 本道天堂成在人线av无码免费| 亚洲白色白色在线播放| 亚洲人成精品久久久久| 91亚洲国产成人精品下载| 亚洲?v女人的天堂在线观看| 成年轻人网站色免费看| 91精品全国免费观看含羞草| 国产三级在线免费观看| 免费无码又爽又黄又刺激网站| 久久精品国产亚洲AV忘忧草18| 亚洲av色影在线| 亚洲综合伊人久久综合| 免费国内精品久久久久影院| 欧美三级在线电影免费| 久草视频免费在线| 亚洲大片免费观看| 久久精品国产大片免费观看| 在线免费观看伊人三级电影| 一级中文字幕免费乱码专区| 亚洲黄网站wwwwww| 亚洲国产精品自在在线观看| 国产AV无码专区亚洲AVJULIA | 亚洲一区二区三区免费在线观看| 亚洲av网址在线观看| 亚洲爱情岛论坛永久| 亚洲第一福利视频| 亚洲一区免费观看| 亚洲欧洲国产经精品香蕉网| 久久狠狠高潮亚洲精品| 亚洲欧洲中文日产| 亚洲伦理中文字幕| 亚洲欧美日本韩国| 国产AV无码专区亚洲AV麻豆丫 | 免费激情视频网站| 国产jizzjizz免费视频| 免费成人黄色大片| 亚洲无线码在线一区观看| 久久精品国产96精品亚洲| 亚洲高清无在码在线无弹窗|