我遇到了一個我正在處理的Java項目的問題:我正在通過面板上的javafx中的代碼創建一個按鈕網格。這些按鈕是我編寫的javafx Button類的所有類型的子類。JavaFX設置鼠標上的按鈕樣式點擊
下面是類的頭:
private final String BASIC_STYLE = "-fx-font: 6 arial;";
private final String CLICKED_STYLE = "-fx-background-color: #0f0";
private int row;
private int col;
private String category;
private boolean selected = false;
在構造函數中我做的follwing:
this.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
toggleSelected();
}
});
這裏的toggleSelected()方法:
public void toggleSelected() {
this.selected = !selected;
this.setStyle(selected ? this.BASIC_STYLE : this.BASIC_STYLE+this.CLICKED_STYLE);
}
它基本上咋辦每次點擊按鈕時切換樣式。當我點擊按鈕時,按鈕首先被操作系統選定(邊框變爲藍色),並且只有當我第二次點擊完全相同的按鈕後,它纔會變成綠色(我通過setStyle提供的樣式)。 但是,所選屬性在第一次單擊時變爲true,在第二次單擊時爲false,這意味着我單擊按鈕一次,它將獲得一個藍色邊框並選擇= true,如果第二次單擊它,它將變爲綠色並且selected = false,如果我第三次點擊它,它會再次變得正常,但選中的將再次爲真。 我覺得很奇怪,第一次點擊按鈕會正確更改「selected」變量,但不會改變樣式。爲什麼會發生這種情況,我如何避免在點擊之前先選擇按鈕?
什麼樣式初始化爲? – 2015-01-26 18:22:46
在構造函數中:\t \t this.setStyle(this.BASIC_STYLE); – 2015-01-26 18:40:45