JavaFX怎么点击按钮A后对A设置一个选中样式,并对其他按钮全部设置为非选中样式

Cykapunk 2020 2020-05-08 11:12:06
按钮点击事件代码如下,一共有三个按钮

if(buttonA.getStyleClass().indexOf("button-unselected2") != -1) {
buttonA.getStyleClass().remove(buttonA.getStyleClass().indexOf("button-unselected2"));
}
buttonA.getStyleClass().add("button-selected2");

if(buttonB.getStyleClass().indexOf("button-selected2") != -1) {
buttonB.getStyleClass().remove(buttonB.getStyleClass().indexOf("button-selected2"));
buttonB.getStyleClass().add("button-unselected2");
}


if(buttonC.getStyleClass().indexOf("button-selected2") != -1) {
buttonC.getStyleClass().remove(buttonC.getStyleClass().indexOf("button-selected2"));
buttonC.getStyleClass().add("button-unselected2");
}

最开始直接用add对三个按钮添加对应样式,但是多点击几次后,就会出现所有按钮都变成button-unselected2的样式。。。。
后面试着先remove在add,也是会这样,后面输出了下getStyleClass()发现3-4次左右,就会出现
button button-unselected2 button-unselected2 button-selected2
这种情况
...全文
364 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
捏造的信仰 2020-05-14
  • 打赏
  • 举报
回复
楼主你要的是 ToggleButton 和 ToggleGroup,下面是例子,除此之外楼主最好另外找文章熟悉下。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class StyleButtonDemo extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(root()));
primaryStage.show();
}

private HBox root() {
HBox hBox = new HBox();
hBox.setPadding(new Insets(50));
hBox.setSpacing(10);

ToggleGroup group = new ToggleGroup();

for (int i = 0; i < 5; i++) {
ToggleButton button = new ToggleButton("button" + i);
button.setToggleGroup(group);
hBox.getChildren().add(button);
}

group.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
if (newValue instanceof ToggleButton) {
System.out.println("你选择了 " + ((ToggleButton) newValue).getText());
}
});

return hBox;
}
}


Cykapunk 2020 2020-05-14
  • 打赏
  • 举报
回复
引用 4 楼 捏造的信仰的回复:
楼主你要的是 ToggleButton 和 ToggleGroup,下面是例子,除此之外楼主最好另外找文章熟悉下。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class StyleButtonDemo extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(root()));
primaryStage.show();
}

private HBox root() {
HBox hBox = new HBox();
hBox.setPadding(new Insets(50));
hBox.setSpacing(10);

ToggleGroup group = new ToggleGroup();

for (int i = 0; i < 5; i++) {
ToggleButton button = new ToggleButton("button" + i);
button.setToggleGroup(group);
hBox.getChildren().add(button);
}

group.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
if (newValue instanceof ToggleButton) {
System.out.println("你选择了 " + ((ToggleButton) newValue).getText());
}
});

return hBox;
}
}


后面看官方文档时找到了,但是我想实现的效果是用RadioButton的功能做出ToggleButton这种效果,就是单选按钮但是没有RadioButton前面那个选中的点。。。
Cykapunk 2020 2020-05-11
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465的回复:
[quote=引用 楼主 Cykapunk 2020 的回复:] 按钮点击事件代码如下,一共有三个按钮 最开始直接用add对三个按钮添加对应样式,但是多点击几次后,就会出现所有按钮都变成button-unselected2的样式。。。。 后面试着先remove在add,也是会这样,后面输出了下getStyleClass()发现3-4次左右,就会出现 button button-unselected2 button-unselected2 button-selected2 这种情况
java 不是有单选按键么! JRadioButton理解一下[/quote] 我知道有radiobutton,但是这个前面的圈不能去掉太丑了。。。
qq_39936465 2020-05-08
  • 打赏
  • 举报
回复
引用 楼主 Cykapunk 2020 的回复:
按钮点击事件代码如下,一共有三个按钮 最开始直接用add对三个按钮添加对应样式,但是多点击几次后,就会出现所有按钮都变成button-unselected2的样式。。。。 后面试着先remove在add,也是会这样,后面输出了下getStyleClass()发现3-4次左右,就会出现 button button-unselected2 button-unselected2 button-selected2 这种情况
java 不是有单选按键么! JRadioButton理解一下
Cykapunk 2020 2020-05-08
  • 打赏
  • 举报
回复
目前的话把第一个if换成while解决了,但感觉这并不是正常的方法。。。。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧