<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,否則顯示有問題


    運行結(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 山風小子 閱讀(6152) 評論(17)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 亚洲狠狠久久综合一区77777| 亚洲国产人成在线观看| 一区二区免费视频| 亚洲毛片基地4455ww| 亚洲国产超清无码专区| 日本特黄a级高清免费大片| 成人精品综合免费视频| 亚洲精品中文字幕麻豆| 国产18禁黄网站免费观看| 久久青草91免费观看| 亚洲精品你懂的在线观看| 国产精品久久免费| 一道本不卡免费视频| 亚洲欧洲春色校园另类小说| 国产免费一区二区三区VR| 3344在线看片免费| 亚洲av丰满熟妇在线播放| 全免费一级毛片在线播放| 国内精品一级毛片免费看| 亚洲色中文字幕在线播放| 在线a毛片免费视频观看| 三级网站免费观看| 亚洲第一街区偷拍街拍| 亚洲?V乱码久久精品蜜桃| 1区2区3区产品乱码免费| 一级做a爰片久久毛片免费看| 亚洲人成影院在线高清| 亚洲精品V欧洲精品V日韩精品| 好爽又高潮了毛片免费下载 | 久久成人a毛片免费观看网站| 国产精品国产亚洲区艳妇糸列短篇| 亚洲精品免费视频| 亚洲女同成人AⅤ人片在线观看| 69堂人成无码免费视频果冻传媒| 成在线人视频免费视频| 亚洲另类无码专区丝袜| 亚洲最大黄色网址| 亚洲视频在线观看免费| 亚洲日韩av无码| 亚洲A丁香五香天堂网| 免费无码不卡视频在线观看|