莊周夢(mèng)蝶

          生活、程序、未來(lái)
             :: 首頁(yè) ::  ::  :: 聚合  :: 管理

          體驗(yàn)了一把JavaFx

          Posted on 2007-05-18 11:05 dennis 閱讀(22460) 評(píng)論(14)  編輯  收藏 所屬分類: java
              JavaOne放出來(lái)的新東西,出來(lái)也有段時(shí)間了,看了論壇和blog上的討論,叫好、不看好的各占一半。今天就去https://openjfx.dev.java.net/ 下載了netbean插件,按照getting startted做了一些例子。總體來(lái)說(shuō),JavaFx仍然是在awt/swing的基礎(chǔ)上的包裝,只不過(guò)用一層薄薄的性感語(yǔ)法包裝了一把,而且這語(yǔ)法與javascript等腳本語(yǔ)言基本一致,特別是聲明性的編程語(yǔ)法與json非常相似。據(jù)sun聲稱要退出一個(gè)消費(fèi)者版本的jre,大概5M-9M大小,消息參見《桌面java的缺陷:面向消費(fèi)者的jre》,這個(gè)恐怕也是給JavaFx專門定制的吧。個(gè)人觀點(diǎn):沒有什么令人激動(dòng)的新鮮玩意,特別是布局方面仍然是麻煩的layout機(jī)制,對(duì)多媒體的支持還是比不上flash,優(yōu)點(diǎn)在于與java服務(wù)端通信方面(因?yàn)槎际莏ava平臺(tái))可能比較有優(yōu)勢(shì),另外就是消費(fèi)者版本jre的推出是個(gè)好消息,jre實(shí)在太大了。

              說(shuō)了這么多,看看Hello World怎么寫的,實(shí)在與json太相似了:
          import javafx.ui.*;
          Frame {
               title: 
          "Hello World JavaFX"
               width: 
          200
               height: 
          200
               content: Label {
                text: 
          "Hello World"
               }
               visible: 
          true
          }

              這是聲明方式來(lái)創(chuàng)建一個(gè)Frame,F(xiàn)rame里面放個(gè)Label,Label上一句Hello World。也可以采用編程方式:
                  var win = new Frame();
                  win.title 
          = "Hello World JavaFX";
                  win.width 
          = 200;
                  
          var label = new Label();
                  label.text 
          = "Hello World";
                  win.content 
          = label;
                  win.visible 
          = true;

          這語(yǔ)法與javascript有什么不同呢?
              再來(lái)看看事件處理,仍然遵循MVC模式,比如我們希望輸入框的文字修改能同時(shí)修改窗體的title,首先定義一個(gè)Model:
                 class HelloWorldModel {
                      attribute saying: String;
                  }

                  var model 
          = HelloWorldModel {
                      saying: 
          "Hello World"
                  };

              把Model綁定到View上:
             
                  var win = Frame {
                      title: bind 
          "{model.saying} JavaFX"
                      width: 
          200
                      content: TextField {
                          value: bind model.saying
                      }
                      visible: 
          true
                  };

          TextFiled的value與model的saying操作進(jìn)行了綁定,而Frame的title也綁定了model的saying方法,因此輸入框的文字改變的話,也會(huì)反映到title上咯。"{model.saying} JavaFX"倒是類似ruby對(duì)字符串的處理方法了。這些例子代碼完全來(lái)自 Getting Started With JavaFx script language,更多精彩內(nèi)容請(qǐng)自己解讀。題外話:netbean蠻好用的啊,在我的1G內(nèi)存機(jī)器上跑的挺歡。


          評(píng)論

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-05-18 13:18 by 壞男孩
          我的機(jī)器只有768M

          # re: 體驗(yàn)了一把JavaFx[未登錄]  回復(fù)  更多評(píng)論   

          2007-05-18 13:54 by Leo
          無(wú)論是Swing還是javaFX,都需要更好的IDE支持

          JavaFX是一種腳本語(yǔ)言,用JavaFX寫出來(lái)的復(fù)雜的UI,會(huì)不會(huì)很難管理和維護(hù)

          # re: 體驗(yàn)了一把JavaFx[未登錄]  回復(fù)  更多評(píng)論   

          2007-05-18 13:57 by Leo
          http://www.sun-lei.cn/2007/05/17/try-javafx-using-netbeans60m9/

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-05-18 14:27 by dennis
          @Leo
          JavaFx采用這樣的聲明性的類似于xml、json的描述語(yǔ)言,就是為了更好的支持IDE,可視化開發(fā)肯定是被充分考慮了。

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-05-18 14:28 by dennis
          @Leo
          我用的是netbean5.5,jdk5,感覺還是很順暢的,netbean6正式版似乎還沒release吧

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-05-18 15:58 by 阿南
          消費(fèi)者版本jre的推出是個(gè)好消息,jre實(shí)在太大了。
          好,找個(gè)是最好的~這樣RCP打成的包就能更小了~

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-05-19 11:38 by 山風(fēng)小子
          粗略看了下,Groovy的SwingBuilder就可完成JavaFX所作的事 :)

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2007-08-04 09:38 by Matthew Chen
          netbeans挺好的,可惜測(cè)試版bug多多,拿來(lái)開發(fā)有點(diǎn)怕怕,我也在netbeans上用javafx了,m10里面又bug(新出的可視化預(yù)覽的bug),改用m9,感覺還行,支持binding和tragger,不過(guò)語(yǔ)法似乎還在變動(dòng),用早期的代碼還報(bào)錯(cuò)了,可以去看它的源代碼,確實(shí)是語(yǔ)法suger,而且運(yùn)行起來(lái)很慢,因?yàn)槭羌兇獾慕忉屓缓髽?gòu)件類和對(duì)象運(yùn)行,發(fā)布里是源代碼形式的,不會(huì)是動(dòng)態(tài)語(yǔ)言吧。

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2008-08-04 17:03 by Bin
          我怎么感覺像是在盜版ext...

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2008-08-15 10:35 by hello
          ext還是盜版java swing呢

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2009-01-21 21:36 by kacakong
          國(guó)內(nèi)第一個(gè)JavaFX專業(yè)論壇 http://www.thejavafx.com

          # re: 體驗(yàn)了一把JavaFx[未登錄]  回復(fù)  更多評(píng)論   

          2009-01-26 05:38 by duduli
          早前就聽過(guò)Javafx了,只是最近才開始接觸。
          很簡(jiǎn)單的入門。好

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2009-07-20 07:43 by 開始
          JavaFx的發(fā)展正步入正常軌道,Java Store將是JavaFx的新起點(diǎn)。

          # re: 體驗(yàn)了一把JavaFx  回復(fù)  更多評(píng)論   

          2009-07-21 11:48 by idea
          越來(lái)越喜歡JavaFx,Java程序員也終于有了RIA利器了。
          主站蜘蛛池模板: 迁西县| 施秉县| 湘西| 镇安县| 营口市| 南召县| 西平县| 宁陵县| 武强县| 哈尔滨市| 鄱阳县| 临邑县| 会东县| 南宫市| 新民市| 虹口区| 浦北县| 钦州市| 塔河县| 滕州市| 翁源县| 潢川县| 涡阳县| 枞阳县| 木兰县| 霍城县| 金沙县| 宾川县| 微山县| 万荣县| 合山市| 辉南县| 昭通市| 赤壁市| 江西省| 黄梅县| 定日县| 青神县| 临漳县| 苗栗市| 化德县|