蠻好奇Oracle為什麼要移除Builder這個功能?
回顧一下JavaFX 2的Builder類別。
Builder是JavaFX 2一個特殊功能與語法,以Button類別 (按鈕) 為例,其對應之Builder類別為ButtonBuilder,透過ButtonBuilder類別可精簡程式長度,但程式的撰寫方式與以往的Java程式不同。
ButtonBuilder類別的方法包括:
- create():建立ButtonBuilder的實體。
- build():以ButtonBuilder物件建立按鈕的實體,並回傳Button物件。
- cancelButton():設定按鈕是否為取消按鈕,則設定按鈕的cancelButton屬性值,若為true,則為取消按鈕。
- defaultButton():設定按鈕是否為預設按鈕,則設定按鈕的defaultButton屬性值,若為true,則為預設按鈕。
Button button = ButtonBuilder.create() .cancelButton(...) .defaultButton(...) .build(); |
請參考以下範例示範以ButtonBuilder類別建立按鈕:
ButtonDemo.class.getResourceAsStream("images/dukeswing.gif")); Scene scene = SceneBuilder.create() .width(250) .height(250) .root( FlowPaneBuilder.create() .hgap(5) .vgap(5) .padding(new Insets(5, 5, 5, 5)) .alignment(Pos.CENTER) .children( // 設定一般按鈕 ButtonBuilder.create() // 設定按鈕的文字 .text("Plain Text") // 設定按鈕的最佳寬度 .prefWidth(100) // 設定按鈕的最佳高度 .prefHeight(20) .build(), // 設定樣式按鈕 ButtonBuilder.create() .text("Styling Text") // 設定按鈕文字的字型 .font(Font.font("Verdana", 12)) // 設定按鈕文字的顏色 .textFill(Color.rgb(255, 0, 0, 1.0)) .prefWidth(100) .prefHeight(20) .build(), // 設定預設按鈕 ButtonBuilder.create() .text("Default") // 設定按鈕是否為預設按鈕 .defaultButton(true) .prefWidth(100) .prefHeight(20) .build(), // 設定取消按鈕 ButtonBuilder.create() .text("Cancel") // 設定按鈕是否為取消按鈕 .cancelButton(true) .prefWidth(100) .prefHeight(20) .build(), // 設定圖像按鈕 ButtonBuilder.create() .text("Image Button") // 設定按鈕所使用的圖像 .graphic(new ImageView(image)) // 設定圖像與文字間的相對位置 .contentDisplay(ContentDisplay.TOP) .prefWidth(100) .build(), // 設定非作用中按鈕 ButtonBuilder.create() .text("Disable Button") .graphic(new ImageView(image)) .contentDisplay(ContentDisplay.TOP) .prefWidth(100) // 設定非作用中按鈕 .disable(true) .build() ) .build() ) .build(); ... |
【執行結果】
【參考資料】
[1] 黃嘉輝,深入研究JavaFX 2。
[2] 黃嘉輝,深入研究Java Swing。
[3] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[4] JavaFX:http://www.oracle.com/technetwork/java/javafx
[5] JavaFX 8.0 API Specification.
[6] Java Platform, Standard Edition 8 API Specification.
© Chia-Hui Huang
沒有留言:
張貼留言