26

Oracle が JavaFX ランタイム ライブラリで配布している「caspian.css」を調べたところ、いくつかの色の値が変数として宣言されていることがわかりました。例えば:

-fx-base: #d0d0d0; // Caspian.css, Line 47

...そして、次のような他のプロパティの値として使用しました。

-fx-color: -fx-base; // Caspian.css, Line 96

ここで、私がやりたいことは、測定単位 ( -fx-radius-default: 10px) を宣言し、コントロールの半径を設定する必要があるたびにそれを使用することです。

-fx-border-radius: -fx-radius-default;
-fx-background-radius: -fx-radius-default;

私はこれまで失敗してきました。私の質問は次のとおりです。これはまったく可能ですか?


編集:実験の詳細を追加する

詳細

JavaFX Scene Builder 1.1 で作成した Experiment.fxml ファイルを次に示します。

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <TextArea layoutX="200.0" layoutY="119.0" prefWidth="200.0" styleClass="track" wrapText="true" />
  </children>
  <stylesheets>
    <URL value="@css/Experiment.css" />
  </stylesheets>
</AnchorPane>

そして、以下はcss/Experiment.css私が使用したものです:

* {
    -fx-radius-default: 10px;
}
.track {
    -fx-border-radius: -fx-radius-default;
    -fx-border-color: black;
}

残念ながら、これは機能せず、次のようなエラー メッセージが表示されます。

スタイルシート ファイルのルール '*.track' から '-fx-border-radius' のルックアップを解決しているときに '-fx-radius-default' を解決できませんでした: /home/abdullah/codebase/src/package/css/Experiment.css

単純な構文 ( -fx-border-radius: 10px) を使用する場合、問題はありません。

ここで何が間違っていますか?


編集:結論

結論:ありえない

「 JavaFX CSSリファレンスガイド」では「ルックアップされた色」のみが言及されており、「変数」の一般的な概念は言及されていないため、私が探しているものはJavaFXの現在のバージョンでは不可能なようです。いい機能だろうけど…

4

5 に答える 5

31

残念ながら、それは色に対してのみ機能するようです。ただし、変数を使用するルールから変数が「表示」されていることを確認する必要があります。

* {
   -fx-base2: #e00;
}
.track {-fx-background-color: -fx-base2;}
于 2012-11-26T14:17:35.190 に答える
1

グリル2010のソリューションのアドオン:
「generate-resources」段階で、Mavenのビルダー(プラグイン)でSCSSをCSSに使用することをお勧めします。したがって、任意のセレクターに任意の数字または色の変数を使用できます。

私はこのシナリオを使用していますが、うまくいきます:)

PS現在のOpenJFXバージョンのCSSファイルで直接行うことはできません。

           <plugins>
                <plugin>
                <groupId>com.github.warmuuh</groupId>
                <artifactId>libsass-maven-plugin</artifactId>
                <version>0.2.10-libsass_3.5.3</version>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outputPath>${project.build.directory}/generated-sources/resources</outputPath>
                    <inputPath>${basedir}/src/main/resources</inputPath>
                    <!--<includePath>${basedir}/src/sass-plugins/</includePath>-->
                    <outputStyle>nested</outputStyle>
                    <generateSourceComments>false</generateSourceComments>
                    <generateSourceMap>false</generateSourceMap>
                    <sourceMapOutputPath>${project.build.directory}/generated-sources/resources
                    </sourceMapOutputPath>
                    <omitSourceMapingURL>true</omitSourceMapingURL>
                    <embedSourceMapInCSS>false</embedSourceMapInCSS>
                    <embedSourceContentsInSourceMap>false</embedSourceContentsInSourceMap>
                    <precision>5</precision>
                    <enableClasspathAwareImporter>true</enableClasspathAwareImporter>
                    <copySourceToOutput>false</copySourceToOutput>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${project.build.directory}/generated-sources/resources</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
于 2019-03-28T14:41:52.097 に答える