举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > javafxcss样式 JavaFX CSS

javafxcss样式 JavaFX CSS

2023-03-18 11:17 Java教程

javafxcss样式 JavaFX CSS

javafxcss样式

JavaFX CSS 是一种用于定义 JavaFX 应用程序外观的样式表语言。它使用 CSS 语法,但有一些特殊的属性和值,只能在 JavaFX 中使用。JavaFX CSS 允许开发人员使用样式表来控制应用程序的外观,而不必在代码中更改任何内容。

JavaFX CSS 样式表可以包含以下内容:

  • 选择器 - 由元素 ID、类名或元素名称组成的字符串,用于标识要应用样式的元素。
  • 属性 - 由驼峰命名法表示的 JavaFX 属性(例如 fontSize 或 backgroundColor)。
  • 值 - 与特定 JavaFX 属性相关联的字面量或单词(例如 10px 或 red)。

JavaFX CSS 样式表可以包含以下几个部分:

  • .root : 这是一个特殊的选择器,可以将样式应用于整个应用窗口。这是最常用的选择器之一。
  • .class : 这是一个常规选择器,可以将样式应用于所有具有特定 class 的元素。
  • .id : 这是一个常规选择器,可以将样式应用于所有具有特定 id 的元素。
  • .type : 这是一个常规选择器,可以将样式应用于所有具有特定 type 的元素。
  • .button { 
            -fx-background-color: #0099FF; 
            -fx-text-fill: white; 
            -fx-font-size: 14px;   }

    上面这条CSS代码会针对所有button对象进行背景颜色、文字颜色、字体大小三方面的修饰。

    JavaFX CSS 是一门功能强大而易于使用的语言,可以帮助你快速创建出惊人的界面效果。此外,CSS 还使得界面风格修改变得十分容易——无需重新郑重代码即可快速修复界面问题或者进行界面风格修正。因此 JavaFX CSS 地位不断上升并已成为 JavaFX 应电影中不可或者都要使电影工具之一。

    JavaFX CSS

    JavaFX教程 - JavaFX CSS


    JavaFX 应用程序支持主题通过 CSS 设置。

    主题可以转换整个应用程序的外观,而不改变其功能。

    在 JavaFX 中,您可以创建,修改或使用现有主题来应用程序。

    应用主题

    setUserAgentStylesheet(String URL) 方法接受表示 JavaFX CSS 文件的有效URL字符串。

    CSS 文件捆绑在jar应用程序内,或者它们可以驻留在本地文件系统或远程 Web 服务器上。

    要从类路径加载 CSS 文件,请调用 getClass()。getResource(“path / some_file.css”)。toExternalForm() 方法。它会找到 CSS 文件并产生一个 URL String。

    下面的代码加载 sample.css 文件作为当前的外观。

    sample.css 文件和 Java 类位于同一目录中,因此文件名前面不需要有路径。

    Application.setUserAgentStylesheet(getClass().getResource("sample.css")
    .toExternalForm());
    

    完整的源代码。

    import javafx.application.Application;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class Main extends Application {
      public static void main(String[] args) {
        Application.launch(args);
        
      }
    
      @Override
      public void start(Stage primaryStage) {
        Application.setUserAgentStylesheet(getClass().getResource("sample.css")
            .toExternalForm());
        
        
        Group root = new Group();
        Scene scene = new Scene(root, 300, 250);
    
        primaryStage.setScene(scene);
        primaryStage.show();
      }
    }
    

    setUserAgentStylesheet() 方法将样式全局应用于应用程序拥有的所有场景。


    预定义皮肤

    JavaFX 8 目前包含两个样式表,Caspian 和 Modena,它们用作默认的跨平台外观和感觉皮肤。

    因为两个样式表是预定义的,您可以使用 setUserAgentStylesheet()方法在它们之间轻松切换。

    以下代码显示如何在 Caspian 和 Modena 外观样式表之间切换。

    // Switch  to JavaFX 2.x"s CASPIAN  Look and  Feel. Application.setUserAgentStylesheet(STYLESHEET_CASPIAN);
    
    // Switch  to JavaFX 8"s Modena Look and  Feel. 
    Application.setUserAgentStylesheet(STYLESHEET_MODENA);
    
    

    我们可以从 jfxrt.jar 文件中提取 CSS 文件 caspian.css 和 modena.css,或者查看位于 http://openjdk.java.net 的 JavaFX 源代码。

    当调用 setUserAgentStylesheet(null) 时,默认样式表 (Modena) 将被自动加载并设置为当前外观。

    对于JavaFX 2.x,默认样式表将是 Caspian。


    场景主题

    通过调用 scene.getStylesheets().add() 方法,我们可以为单个场景及其子节点设置样式。

    我们将传递一个表示 JavaFX CSS 文件的 URL 字符串。

    以下代码调用 setUserAgentStylesheet(null) 加载 Modena 作为外观,然后通过调用 getStylesheets()。add() 方法设置场景的其他样式。

    Application.setUserAgentStylesheet(null); // defaults to Modena
    
    // apply   custom  look  and  feel to the   scene. 
    scene.getStylesheets()
    .add(getClass().getResource("my_cool_skin.css")
    .toExternalForm());
    
    

    CSS样式

    类似于 HTML5 使用 CSS 样式表的方式,在场景图上有与 N​​ode 对象相关联的选择器或样式类。

    所有 JavaFX 场景图形节点分别有 setId(),getStyleClass()。add() 和 setStyle() 方法来应用可以改变节点的背景颜色,边框,笔画等的样式。

    选择器在场景图上定位 JavaFX 节点,然后我们可以使用 CSS 样式定义对它们进行样式化。

    两种类型的选择器类型是 id class

    id 选择器是在场景节点上设置的唯一字符串名称。

    类选择器是一个字符串名称,可以作为标记添加到任何 JavaFX 节点。

    类选择器与 Java 类的概念无关。类选择器用于对节点进行分组以将它们与一个CSS样式定义一起设置样式。

    ID选择器

    id 选择器是赋值给节点的唯一字符串名称。当使用 id 选择器时,我们将调用 JavaFX 节点对象上的 setId(String ID) 方法来设置其id。

    例如,要定位 id 为 my-button 的 Button 实例,您将调用 setId(“my-button”) 方法。

    要为按钮设置 id 为 my-button 的样式,您将创建一个用 id 声明的 CSS 样式定义块 selector#my-button,如下所示:

    #my-button {
        -fx-text-fill: rgba(17, 145,  213);
        -fx-border-color:  rgba(255, 255,  255,  .80);
        -fx-border-radius: 8;
        -fx-padding: 6  6  6  6;
    }
    

    此 CSS 样式块将应用于具有 my-button 的唯一标识的按钮。

    CSS 选择器名称前面带有#符号,而 Java 代码中的 id 不使用 # 符号。

    类选择器

    当使用类类型选择器时,我们将调用 getStyleClass()。add(String styleClass) 方法向节点添加一个选择器。该方法允许我们有多个样式类来对节点进行样式。

    getStyleClass()方法返回一个ObservableList,我们可以添加和删除样式类来动态更新它的外观。

    以下代码通过getStyleClass().add("num-button")方法定位样式类包含num-button的按钮。

    以下是用类选择器声明的 CSS 样式定义块 .num-button :

    .num-button  {
        -fx-background-color: white, rgb(189,218,230), white;
        -fx-background-radius: 50%;
        -fx-background-insets: 0, 1, 2;
        -fx-font-family:  "Helvetica";
        -fx-text-fill:  black;
        -fx-font-size:  20px;
    }
    

    此 CSS 样式块将应用于具有样式类 num-button 的按钮。

    CSS 选择器名称以.号为前缀,而 Java 代码中的选择器不使用。符号。

    选择器模式

    选择器可以有模式来遍历场景图的节点从根节点到子节点的层次结构。

    我们可以对父节点是某种类型的子节点进行样式化。以下代码显示了如何设置所有按钮的样式,其父对象是HBox。

    .hbox  > .button {  -fx-text-fill: black;  }
    

    选择器模式 .hbox>.button styles 作为 HBox 的后代的 Button 节点。两个选择器之间的大于符号允许系统知道要对哪些节点进行样式。

    JavaFX 节点的选择器都是小写字母,如果控件具有多个字,则它们用连字符分隔。例如,GridPane 的类选择器将是 .grid-pane

    我们还可以使用公共属性来为两种不同类型的节点设置样式。以下代码显示如何为所有标签和文本节点设置样式。

    .label,.text {  -fx-font-size: 20px;  }
    
阅读全文
以上是VUE中文网为你收集整理的javafxcss样式 JavaFX CSS全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们