2

それが私であるかどうかはわかりませんでした。CSSを介してコントロールのスタイルを設定するために適切な属性を使用していませんでした。しかし、今日、私はEnsembleアプリケーションの1つの例をテストし、そこでも機能していないことに気づきました。

正しく設定するのが最も難しいと思うのは次 のとおりです。 -fx-text-fill たとえば、ラベルのテキストの色を変更するには、次のようにします。

#pill-left:selected .label {
 /* -fx-text-fill: black; */
 -fx-text-fill:red;
 -fx-effect: dropshadow( one-pass-box , white , 0, 0.0 , 0 , 1 );
}

そこに何を入れても、テキストは常にデフォルト値の色を使用します。

JavaFx2.1を使用しています。たぶんこれは2.2ですでに修正されていますが、それは非常に基本的なものなので、指摘する必要があると思います。

4

2 に答える 2

5

95%はこれがバグであると確信しています。

-fx-fill: red;代わりに使用する必要がある回避策-fx-fill-text

于 2012-06-13T17:01:34.417 に答える
2

さて、いくつかの広範なテストの後、私はスタイルシートを使用してそれを機能させることができました。

重要なのは、 .label属性を削除し、コントロールのIDのみを使用して、必要に応じて状態( hover 、:selectedなど)を追加することです。

    #pill-left {
    -fx-padding: 5;
    -fx-text-fill:red;
    -fx-border-image-source: url("left-btn.png");
    -fx-border-image-slice: 4 4 4 4 fill;
    -fx-border-image-width: 4 4 4 4;
    -fx-border-image-insets: 0;
    -fx-border-image-repeat: stretch;
    -fx-background-color: null !important; 
}

#pill-left:hover, #pill-left:hover:selected { -fx-text-fill:blue; }
#pill-left:selected { 
    -fx-text-fill:green;
    -fx-border-image-source: url("left-btn-selected.png"); }

これはすべて、アンサンブルプロジェクトから直接取得したコード例に基づいているため、正しいと想定しています。多くのプログラマーは、私がこの問題でやったように、自分の髪を引っ張っていることに気付くでしょう。

とにかく、これはJavafxでstyleSheetsを使用する方法について学んだ重要な教訓であり、可能な場合はID以外のものを使用してテキストの色などの属性を指定することを避けます。

于 2012-06-14T09:56:52.763 に答える