【问题标题】:Is there a way to give a JavaFX class a new style class, and then access all other objects inside that class normally?有没有办法给 JavaFX 类一个新的样式类,然后正常访问该类中的所有其他对象?
【发布时间】:2020-05-27 07:04:54
【问题描述】:

我目前有一个 JavaFX 项目,我正在努力改进 CSS。我创建了一些类,其中包含其他类(即 Button、TextField、ScrollPane 等)

为方便起见,我们将这个类称为 Bucket。

在我的 Bucket 类中,我还有一个 Button 和 TextField。

我通过以下方式向存储桶添加了一个新的 styleClass:

getScene().getStyleClass().add("bucket");

完成此操作后,我转到我的 CSS 文件,我想更改 Bucket 类中按钮的文本颜色。

我是否也需要给按钮一个新的 StyleClass(),或者我可以通过以下方式访问它:

.bucket > .button { -textColor: white; }

如果我能做到后者,我怎样才能让它发挥作用?

感谢任何帮助!

【问题讨论】:

    标签: java css eclipse javafx


    【解决方案1】:

    假设 Bucket 看起来像:

    public class Bucket extends Region { // or extends Pane, Control, some other Parent
    
      public Bucket() {
        getStyleClass().add("bucket");
    
        Button button = new Button("Some text");
        getChildren().add(button);
      }
    }
    

    那么是的,你会使用:

    .bucket > .button {
      -fx-text-fill: <your-color>;
    }
    

    如果按钮不是Bucket 的直接子级,则去掉&gt;。不知道如何回答:“如果我能做到后者,我怎样才能让它发挥作用?”。您可以执行后者,并且 您如何使其工作(尽管您的示例未使用正确的 CSS 属性)。

    请注意,getStyleClass().add("some-style-class") 是为每个节点分配样式类的方式。因此,您可以使用 API 执行完全相同的操作。

    有关详细信息,请参阅JavaFX CSS Reference Guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      相关资源
      最近更新 更多