Skip to content

Commit bb32259

Browse files
committed
Fix abnormal toggle group button click event
1 parent 4634a7e commit bb32259

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

src/main/java/root/javafx/CustomView/ToggleGroupVBox.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6+
import javafx.event.ActionEvent;
7+
import javafx.event.EventHandler;
68
import javafx.scene.layout.FlowPane;
79
import javafx.scene.layout.VBox;
810
import javafx.scene.paint.Paint;
@@ -24,9 +26,13 @@ public class ToggleGroupVBox extends VBox {
2426

2527
public ToggleGroupVBox() {
2628

27-
parentToggleHBox.setToggleChangeListener((ob, oldValue, newValue) -> {
28-
for (ToggleHBox t : childToggleList) {
29-
t.setToggleSelected(parentToggleHBox.isToggleSelected());
29+
parentToggleHBox.setToggleAction(new EventHandler<ActionEvent>() {
30+
31+
@Override
32+
public void handle(ActionEvent event) {
33+
for (ToggleHBox t : childToggleList) {
34+
t.setToggleSelected(parentToggleHBox.isToggleSelected());
35+
}
3036
}
3137
});
3238

@@ -52,11 +58,15 @@ public void addChildToggle(String text) {
5258
ToggleHBox childToggleHBox = new ToggleHBox();
5359
childToggleHBox.setLabelText(text);
5460
childToggleHBox.setToggle(CHILD_TOGGLE_SIZE, CHILD_TOGGLE_COLOR, CHILD_TOGGLE_LINE_COLOR);
55-
childToggleHBox.setToggleChangeListener((ob, oldValue, newValue) -> {
56-
if (childToggleHBox.isToggleSelected()) {
57-
parentToggleHBox.setToggleSelected(true);
58-
} else {
59-
parentToggleHBox.setToggleSelected(!isAllNotSelected());
61+
childToggleHBox.setToggleAction(new EventHandler<ActionEvent>() {
62+
63+
@Override
64+
public void handle(ActionEvent event) {
65+
if (childToggleHBox.isToggleSelected()) {
66+
parentToggleHBox.setToggleSelected(true);
67+
} else {
68+
parentToggleHBox.setToggleSelected(!isAllNotSelected());
69+
}
6070
}
6171
});
6272

@@ -73,6 +83,7 @@ public void addChildToggle(String text) {
7383
public void setSelected(String alias, boolean isSelected) {
7484
childToggleList.stream().filter(child -> child.getLabelText().equals(alias))
7585
.forEach(child -> child.setToggleSelected(isSelected));
86+
parentToggleHBox.setToggleSelected(!isAllNotSelected());
7687
}
7788

7889
/**

src/main/java/root/javafx/CustomView/ToggleHBox.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.jfoenix.controls.JFXToggleButton;
66

77
import javafx.beans.value.ChangeListener;
8+
import javafx.event.ActionEvent;
9+
import javafx.event.EventHandler;
810
import javafx.fxml.FXML;
911
import javafx.fxml.FXMLLoader;
1012
import javafx.scene.control.Label;
@@ -88,4 +90,13 @@ public boolean isToggleSelected() {
8890
public void setToggleChangeListener(ChangeListener<? super Boolean> listener) {
8991
toggleBtn.selectedProperty().addListener(listener);
9092
}
93+
94+
/**
95+
* Toggle 버튼 클릭 이벤트를 설정한다.
96+
*
97+
* @param e
98+
*/
99+
public void setToggleAction(EventHandler<ActionEvent> e) {
100+
toggleBtn.setOnAction(e);
101+
}
91102
}

0 commit comments

Comments
 (0)