第十一回 JavaFX2.0開關按鈕ToggleButton

來源:互聯網
上載者:User

文本來自我的翻譯文章http://somefuture.iteye.com/blog/1198707

原文地址http://download.oracle.com/javafx/2.0/ui_controls/toggle-button.htm

 

 ToggleButton類代表了可以通過JavaFX API建立的另一類按鈕。 2個或更多的這種按鈕被加入一個組中,但是每次只能有一個被選中,或者一個都沒有。 Figure 5-1是在一個組中有3個開關按鈕的應用。這個應用根據哪個開關按鈕別按下來決定繪製何種顏色的矩形。

Figure 5-1 Three Toggle Buttons


Description of "Figure 5-1 Three Toggle Buttons"

建立Toggle Button

可以通過ToggleButton類的3個構造方法的任意一個來建立開關按鈕。見Example
5-1.

Example 5-1 Creating Toggle Buttons

//A toggle button without any caption or iconToggleButton tb1 = new ToggleButton();//A toggle button with a text captionToggleButton tb2 = new ToggleButton("Press me");//A toggle button with a text caption and an iconImage image = new Image(getClass().getResourceAsStream("icon.png"));ToggleButton tb3 = new ToggleButton ("Press me", new ImageView(image));

ToggleButton類繼承了Labeled類,因而你可以為其指定文本標題、映像、文本加映像。可以使用Labeled  類的setTextsetGraphic方法來給開關按鈕指定文本和映像。

 

在代碼中定義了開關按鈕後,就可以把它們放進組中並指定特定的行為。

把Toggle Button加入組

 ToggleButton類的實現和RadioButton類實現相當類似。不過和單選框不同的是,開關按鈕並不要求每次必須最少有一個按鈕被選中在組中。也就是說,點擊選中的開關按鈕會使其取消選中,但是點擊組中的選項按鈕沒任何反應。

t花點時間看下 Example 5-2中的代碼吧.

Example 5-2 Combining Toggle Buttons in a Group

final ToggleGroup group = new ToggleGroup();ToggleButton tb1 = new ToggleButton("Minor");tb1.setToggleGroup(group);tb1.setSelected(true);ToggleButton tb2 = new ToggleButton("Major");tb2.setToggleGroup(group);ToggleButton tb3 = new ToggleButton("Critical");tb3.setToggleGroup(group);

Example 5-2建立了3個開關按鈕並把它們加入開關組中。tb1調用了setSelected方法,所以應用開啟後它會被按下。但是,你也可以按起Minor按鈕使得沒有任何開關按鈕被按下。見 Figure
5-2.

Figure 5-2 Three Toggle Buttons in a Group


Description of "Figure 5-2 Three Toggle Buttons in a Group"

一般使用開關按鈕的組來為每個按鈕分配特定行為。下一部分將解釋如何使用這些開關按鈕改變矩形的顏色。

設定行為

ToggleButton類從Node 類繼承了setUserData方法,該方法可以讓你給任意選中的選項賦特定的值。在 Example
5-3中,使用者資料指明了要用什麼顏色來繪製矩形。

 

Example 5-3 Setting User Data for the Toggle Buttons

tb1.setUserData(Color.LIGHTGREEN);tb2.setUserData(Color.LIGHTBLUE);tb3.setUserData(Color.SALMON);final Rectangle rect = new Rectangle(145, 50);final ToggleGroup group = new ToggleGroup();group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){    public void changed(ObservableValue<? extends Toggle> ov,        Toggle toggle, Toggle new_toggle) {            if (new_toggle == null)                rect.setFill(Color.WHITE);            else                rect.setFill(                    (Color) group.getSelectedToggle().getUserData()                );         }});

ChangeListener<Toggle>對象檢查了組中被按下的開關。如果沒有開關按鈕被按下,矩形就用白色繪製。如果某個按鈕被按下,getSelectedTogglegetUserData方法會連續調用來返回一種顏色繪製矩形。

比如使用者按下了tb2按鈕, setSelectedToggle().getUserData()的調用返回 Color.LIGHTBLUE結果 Figure
5-3.

Figure 5-3 Using Toggle Buttons to Paint a Rectangle


Description of "Figure 5-3 Using Toggle Buttons to Paint a Rectangle"

查看 ToggleButtonSample.java檔案檢查應用的完整代碼。

美化Toggle Button

可以通過為開關按鈕應用CSS來改善應用的視效。在JavaFX 2.0應用中使用CSS和在HTML中使用幾乎一樣,因為它們都基於相同的CSS規範。Example 5-4使用setStyle方法改變了開關按鈕的 -fx-base CSS熟悉。

Example 5-4 Applying CSS Styles to Toggle Buttons

tb1.setStyle("-fx-base: lightgreen;");tb2.setStyle("-fx-base: lightblue;");tb3.setStyle("-fx-base: salmon;");

程式中加入這些代碼後開關按鈕的變化見 Figure 5-4.

Figure 5-4 Painted Toggle Buttons


Description of "Figure 5-4 Painted Toggle Buttons"

 你可以嘗試ToggleButton類的其他CSS屬性,或者應用動畫、轉換、 JavaFX API中的各種視效。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.