2016-03-22 3 views
0

VBoxに複数の同一のタスクオブジェクトがあります。取り消し線で特定のタスクのラベルのテキストの書式を設定しようとしています。私が知っていることから、これはラベルのテキストサブノードでのみ行うことができます。達成するための方法はありラベルの取り消し線、ルックアップを使用してラベルのテキストサブノードを取得する

#label .text { 
    -fx-strikethrough: true; 
} 

:私はCSSでこの行で取り消し線の私の書式設定を実現することができ、それでも

label.lookup(".text"); 

以下のコードは、私にNULLポインタを返します。インラインコードメソッドを使用した取り消し線効果ですか?またはCSSを使用する回避策がありますか?ありがとう。

+0

CSSのアプローチには何が問題なのですか? –

+0

私はこのラベルで複数のオブジェクトを作成しようとしていますが、取り消し線としてフォーマットするだけです。 CSSを使用すると、すべてのオブジェクトのラベルに取り消し線が適用されます。 – kangsoon93

+0

取り消し線を付けるラベルにスタイルクラスを追加するだけです....あなたが達成しようとしていることをより完全に説明するために質問を編集すると、完全な答えを与える方が簡単かもしれません。 (ルックアップもうまくいくはずですが、ルックアップはそれほど堅牢ではありません。あなたはすべての文脈を提供していません) –

答えて

0

私の実装での問題は、すべてのタスクオブジェクトに共通のCSSスタイルシートを使用して固定されていることでした。

if(isStrikethrough) { 
    label.getStylesheets.addAll(getClass().getResource("Strikethrough.css").toExternalForm()); 
} else { 
    label.getStylesheets.addAll(getClass().getResource("NoStrikethrough.css").toExternalForm()); 
} 

などで私を助けるためJames_Dに感謝を:最も簡単な解決策は、スタイルが必要とされるか否かに応じて上記のようにラベルにテキストサブノードにアクセスし、各タスクの複数のスタイルシートを作成することでしたアマチュアの質問、haha

+0

ラベルには異なるスタイルクラスを使用する方が簡単でしょうが、単一のスタイルシートです。また、このために[CSS 'PseudoClass'](http://docs.oracle.com/javase/8/javafx/api/javafx/css/PseudoClass.html)を検討することもできます。 [こちら](https://gist.github.com/james-d/846eb9ff72bd66fdd955)は疑似クラスを使った例です。 –

+0

うわー、それが可能であることを知らなかった。素晴らしい例をありがとう! – kangsoon93