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太相似了:
這是聲明方式來(lái)創(chuàng)建一個(gè)Frame,F(xiàn)rame里面放個(gè)Label,Label上一句Hello World。也可以采用編程方式:
這語(yǔ)法與javascript有什么不同呢?
再來(lái)看看事件處理,仍然遵循MVC模式,比如我們希望輸入框的文字修改能同時(shí)修改窗體的title,首先定義一個(gè)Model:
把Model綁定到View上:
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ī)器上跑的挺歡。
說(shuō)了這么多,看看Hello World怎么寫的,實(shí)在與json太相似了:
import javafx.ui.*;
Frame {
title: "Hello World JavaFX"
width: 200
height: 200
content: Label {
text: "Hello World"
}
visible: true
}
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;
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"
};
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
};
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ī)器上跑的挺歡。