子类JavaFX的内联样式
我想通过编程来应用这种风格:子类JavaFX的内联样式,java,css,javafx,Java,Css,Javafx,我想通过编程来应用这种风格: .rating:disabled > .container:disabled .button:disabled{ -fx-pref-height:15; -fx-background-size: cover; -fx-padding: 0; } 我已经试过了,但不起作用: ratingHeigth.bind(mainBorderPane.prefHeightProperty().divide(0.0355)); vi
.rating:disabled > .container:disabled .button:disabled{
-fx-pref-height:15;
-fx-background-size: cover;
-fx-padding: 0;
}
我已经试过了,但不起作用:
ratingHeigth.bind(mainBorderPane.prefHeightProperty().divide(0.0355));
vipRating.styleProperty().bind(Bindings.concat(".rating:disabled > .container:disabled .button:disabled{ -fx-pref-height: ", ratingHeigth.asString(), ";}"));
据我所知,这是未记录的行为(因此您可能不想依赖它),但您可以以与“查找颜色”(已记录)类似的方式创建“查找大小” 在外部CSS样式表中,执行以下操作
.rating{
禁用按钮大小:15;
}
.rating:disabled>。容器:disabled。按钮:disabled{
-fx pref高度:禁用按钮大小;
-背景尺寸:封面;
-外汇储备:0;
}
那么在Java中呢
vipRating.styleProperty().bind(ratingHeight.asString("disabled-button-size: %f ;"));
代码不起作用,因为内联样式只是将字符串指定的实际样式应用于调用setStyle(…)
的节点:内联样式不包括选择器
上述解决方案的想法是在CSS文件中定义一个“查找大小”(类似于CSS变量),用于定义所需的高度。然后使用setStyle
更改“查找大小”的值。该值由子节点继承,因此在容器上使用rating
CSS类的setStyle
就足够了
这里有一个(更简单的)SSCE。移动滑块,按钮将更改大小:
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.IntegerBinding;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class LookedUpSizeTest extends Application {
@Override
public void start(Stage primaryStage) {
Button button = new Button("Test");
StackPane stack = new StackPane(button);
BorderPane root = new BorderPane(stack);
Slider sizeSlider = new Slider(30, 350, 40);
stack.styleProperty().bind(sizeSlider.valueProperty().asString("button-size: %f ;"));
root.setBottom(sizeSlider);
Scene scene = new Scene(root, 400, 400);
scene.getStylesheets().add("style.css");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
style.css:
.root{
按钮尺寸:20;
}
.按钮{
-fx pref高度:按钮大小;
}
谢谢你,我的朋友,我已经找了好几天了。@James\u D,这个技巧似乎对-fx font size
不起作用,我正在尝试绑定.table列。label{-fx font size:label size;}
但不起作用。有什么新的技巧吗?只要发现对于-fx font size
,您可以直接应用于节点,并将用于选择器。