<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 山風小子 閱讀(6154) 評論(17)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 亚洲av无码不卡私人影院| 免费A级毛片无码免费视| 亚洲精品无码久久久久AV麻豆| 亚洲国产精品成人午夜在线观看| 成人免费男女视频网站慢动作 | 在线免费观看一区二区三区| 亚洲成无码人在线观看| 国产精品久久久久免费a∨| 97se亚洲国产综合自在线| 成年女人18级毛片毛片免费 | 亚洲日本一区二区一本一道| 一个人免费观看www视频| 亚洲中文字幕无码日韩| 午夜免费福利片观看| 亚洲理论在线观看| 无码人妻精品一二三区免费| 亚洲色无码专区一区| 国产精品色午夜视频免费看| 永久免费无码网站在线观看个| 亚洲熟妇少妇任你躁在线观看无码| 亚洲视频在线免费| 亚洲视频免费在线观看| 在线观看特色大片免费视频 | 6080午夜一级毛片免费看| 亚洲另类自拍丝袜第1页| 四虎免费大片aⅴ入口| 一区二区三区免费看| 亚洲精品**中文毛片| 日韩免费观看视频| 国产综合免费精品久久久| 亚洲国产成+人+综合| 亚洲AⅤ视频一区二区三区| 久草免费手机视频| 亚洲色大成网站www久久九| 亚洲另类激情综合偷自拍图| 国产成人yy免费视频| 国产99视频精品免费视频76| 亚洲色图黄色小说| 免费在线观看a级毛片| 99re6免费视频| 免费看黄福利app导航看一下黄色录像 |