【问题标题】:JavaFX CSS center alignment [closed]JavaFX CSS中心对齐[关闭]
【发布时间】:2016-01-01 19:38:33
【问题描述】:

我正在使用 CSS 在 JavaFX 中制作自定义主题,并且我正在尝试使所有 HBoxes 和 VBoxes 具有居中对齐。我到处寻找是否有针对父母或 HBoxes 的样式类,但我似乎找不到。我知道我可以只做HBox.setAligent(Pos.CENTER);,但我不想为我拥有的每个 HBox 或 VBox 键入该命令。我可以做些什么来使所有 HBoxes 居中对齐,而不必使用自定义类并将其放入 CSS 文件中?

【问题讨论】:

  • 如果您在代码的某些方面需要帮助,您需要在问题中包含该代码。
  • @TylerH 虽然我同意许多问题从代码示例中受益,但在这种情况下,即使没有它,问题似乎也很清楚。套用“HBox(和VBox)是否有默认样式类,如果没有,有没有办法为所有HBoxes(或VBoxes)提供样式而没有一个?”

标签: css javafx-8


【解决方案1】:

documentation 中所述,HBox(和VBox,以及任何不是Control 子类的节点)的样式类默认为空。

但是,您可以使用Type Selector。引用文档:

Node 的 getTypeSelector 方法返回一个类似于 CSS 类型选择器的字符串。默认情况下,此方法返回类的简单名称。

所以你只需要类名作为选择器。 SSCCE:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class AlignmentTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        ListView<String> listView = new ListView<>();
        TextField textField = new TextField();
        Button button = new Button("Click here");
        Label label = new Label("A label");

        VBox root = new VBox(5, new HBox(5, listView, button), new HBox(5, label, textField));

        Scene scene = new Scene(root, 400, 400);
        scene.getStylesheets().add("alignment-test.css");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

使用alignment-test.css:

HBox, VBox {
    -fx-alignment: center ;
    -fx-padding: 10 ;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 2023-04-02
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多