这是无证行为,据我我知道(所以你可能不想依赖它),但你可以创建一个“查找大小”,类似于“查找颜色”(已记录)。
在你的外部CSS样式表,做
.rating {
disabled-button-size: 15 ;
}
.rating:disabled > .container:disabled .button:disabled{
-fx-pref-height: disabled-button-size ;
-fx-background-size: cover;
-fx-padding: 0;
}
然后用Java做
vipRating.styleProperty().bind(ratingHeight.asString("disabled-button-size: %f ;"));
您的代码不起作用,因为内嵌样式简单地套用由字符串指定的实际风格您调用的节点setStyle(...)
:内联样式不包括选择器。
上述解决方案中的想法是在定义所需高度的CSS文件中定义“查找大小”(一种CSS变量)。然后使用setStyle
更改该“查找大小”的值。该值由子节点继承,因此在具有rating
CSS类的容器上使用setStyle
就足够了。
这是一个(更简单)SSCCE。移动滑块和按钮将改变大小:
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 {
button-size: 20 ;
}
.button {
-fx-pref-height: button-size ;
}
谢谢我的朋友,我是天寻找它。 – Marckaraujo
今天我学到了一件新事物。 +1和fav。 – Mordechai
@James_D,似乎这个技巧不适用于'-fx-font-size',我试图绑定'.table-column .label {-fx-font-size:label-size; }'但没有工作。任何新的诡计? – Marckaraujo