<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寫了個計算器玩玩,順便也給還不太了解Groovy中SwingBuilder的朋友展示一下SwingBuilder的用法。

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


    運行結果:



    /*
    ?*?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 山風小子 閱讀(6161) 評論(17)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 91亚洲国产成人久久精品网址 | 亚洲国产精品无码久久一线 | 免费观看日本污污ww网站一区| 国产成人人综合亚洲欧美丁香花| 亚洲AV成人潮喷综合网| 国产在线国偷精品免费看| 亚洲香蕉免费有线视频| 国产免费人视频在线观看免费| 成人免费ā片在线观看| 亚洲日产2021三区在线| 亚洲国产精品尤物YW在线观看| 黄网站免费在线观看| 亚洲精品色播一区二区| 亚洲国产一二三精品无码| 成年午夜视频免费观看视频| 久久WWW免费人成—看片| 国产精品亚洲自在线播放页码 | 色偷偷亚洲第一综合网| 亚洲视频精品在线| 国产区卡一卡二卡三乱码免费| 免费观看成人久久网免费观看| 亚洲AV无码专区在线观看成人| 亚洲va在线va天堂va不卡下载| 免费国产成人午夜私人影视| 日本zzzzwww大片免费| 岛国精品一区免费视频在线观看| 77777亚洲午夜久久多喷| 蜜桃视频在线观看免费网址入口| 亚洲精品456在线播放| 日韩精品亚洲aⅴ在线影院| 2021在线观看视频精品免费| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲色精品vr一区二区三区| 97在线线免费观看视频在线观看 | 狠狠亚洲狠狠欧洲2019| 国产91色综合久久免费分享| 日韩在线视频线视频免费网站| 亚洲成人黄色网址| 伊伊人成亚洲综合人网7777| 中文字幕免费在线| WWW国产成人免费观看视频|