gpt4 book ai didi

java - 一次设置多个按钮的样式 [Javafx]

转载 作者:行者123 更新时间:2023-12-01 11:44:47 26 4
gpt4 key购买 nike

我搜索并看到了几个与此类似的其他问题,但它们并没有真正回答我的问题。我有一组看起来都一样的按钮,目前我正在单独更改每个按钮的样式,如下所示:

button1.setBackground(background);
button1.setPrefHeight(height);
button1.setPrefWidth(width);

button2.setBackground(background);
button2.setPrefHeight(height);
button2.setPrefWidth(width);

等等。我尝试了以下方法,但没有成功:

templateButton.setBackground(background);
templateButton.setPrefHeight(height);
templateButton.setPrefWidth(width);
button1 = templateButton;
button2 = templateButton;
button3 = templateButton;

但是随后我收到一条错误,指出“添加了重复的子项”,我假设这意味着按钮 1/2/3 都以某种方式指向 templateButton,而不是仅仅继承 templateButton 的属性。有没有更好的方法来做到这一点,或者我应该单独设置它们?

最佳答案

将样式应用于 JavaFX 中的控件的推荐方法是使用 CSS,最好是在外部样式表中。除了在布局代码和样式代码之间提供良好的分离之外,这还允许您同时设置多个场景图节点的样式。

要应用于应用程序中的所有按钮,您可以使用

.button {
-fx-background-color: ... ;
-fx-pref-height: ... ;
-fx-pref-width: ... ;
}

要应用于选定的一组按钮,您可以为这些按钮指定样式类:

Button button1 = new Button(...);
Button button2 = new Button(...);
Button button3 = new Button(...);

Stream.of(button1, button2, button3).forEach(button ->
button.getStyleClass().add("my-style"));

然后css文件中的选择器就变成了

.my-style {
-fx-background-color: ... ;
/* etc */
}

或者,如果所有按钮都位于特定布局 Pane 中,您可以选择布局 Pane 中的所有按钮:

Button button1 = new Button(...);
Button button2 = new Button(...);
Button button3 = new Button(...);

VBox buttons = new VBox(button1, button2, button3);
buttons.getStyleClass().add("button-container");

然后 CSS 选择器是

.button-container > .button {
/* styles.... */
}

关于java - 一次设置多个按钮的样式 [Javafx],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com