Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子类JavaFX的内联样式_Java_Css_Javafx - Fatal编程技术网

子类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
,您可以直接应用于节点,并将用于选择器。