這是無證行爲,據我我知道(所以你可能不想依賴它),但你可以創建一個「查找大小」,類似於「查找顏色」(已記錄)。
在你的外部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