2017-06-04 86 views
1

我正在研究一個情緒雜誌應用和目前,它要求用戶評分他們的心情在1-5的等級,然後保存他們的條目如圖所示在下面的圖片上。圖片按鈕,用戶只能選擇一個JavaFX

我想用5個小按鈕替換它,這5個小按鈕分別以相應的表情符號圖片作爲背景。我已經選擇了我想要使用的圖像,並且考慮實現一個普通的FX按鈕或者一個ImageView,但是看起來單擊按鈕只是做了一些操作;相反,我希望用戶只能一次選擇一個(如單選按鈕)。我怎樣才能做到這一點?

enter image description here

+0

如何將表明,只有一個選擇?例如Button的背景顏色會不同? – GOXR3PLUS

+0

好點,我應該提到這一點。我在想也許是在按鈕周圍有一個很薄的輪廓,以顯示最後一次點擊哪一個? –

回答

1

建議1:

您可以使用ControlsFX SegmentedButton(設置爲按鍵的圖形,你優先停留imoji):

enter image description here

從DOC :

SegmentedButton是一個簡單的控件,它將一組ToggleButton實例強制在一起,使它們顯示爲一個集合按鈕(帶有子按鈕),而不是單獨的按鈕。這是更好地與圖片澄清:

有這個控制非常少的API,其本質就是ToggleButton情況下,按通常(不要打擾將它們放入ToggleGroup,因爲這是由SegmentedButton本身完成) ,然後將這些按鈕放在按鈕列表中。長手的方式來編碼,這是如下:

ToggleButton b1 = new ToggleButton("day"); 
ToggleButton b2 = new ToggleButton("week"); 
ToggleButton b3 = new ToggleButton("month"); 
ToggleButton b4 = new ToggleButton("year"); 

SegmentedButton segmentedButton = new SegmentedButton();  
segmentedButton.getButtons().addAll(b1, b2, b3, b4); 

這樣做的一個稍短方法是將切換按鈕實例傳遞到可變參數構造,因爲這樣的:

SegmentedButton segmentedButton = new SegmentedButton(b1, b2, b3, b4); 

建議2:

您可以使用ControlsFX Rating

enter image description here

從DOC:

一種允許用戶提供一個等級控制。此控件支持部分評級(即不是整數,並取決於用戶在控件中點擊的位置),並更新懸停時的評級。

要創建一個等級控制,看起來像這樣很簡單:

final Rating rating = new Rating(); 

這將創建一個默認的水平等級控制。要創建一個垂直等級控制,簡單地改變方向,因爲這樣的:

final Rating rating = new Rating(); 
rating.setOrientation(Orientation.VERTICAL); 

您可以繼續從doc閱讀...


建議3:(沒有第三圖書館需要)

你可以自定義,每個人都會有一個PseudoClass(selected),每次其中一人被按下時,其他人會有僞類(selected=false),所以用戶可以看到選擇了哪一個。

所以,你可以做類似的東西:enter image description here

,如果你想實現它閱讀這篇文章 - >http://fxexperience.com/2012/02/customized-segmented-toolbar-buttons/

+0

這正是我所尋找的,非常感謝! –

+0

我寧願使用僞類而不是類 - 這似乎是他們爲... – glglgl

+0

@glglgl行動是的,我想表達的是僞類,我正在修復它。 – GOXR3PLUS