0

次の CSS を使用して、JavaFx ラベル テキストのテキスト背景を緑に設定しようとしています。

label.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););

そして、次を使用して強調表示を解除します

label.setStyle("-fx-background-color:rgba(0,0,255,0);");

ただし、これらは、連続して実行する必要がある場合、ほとんどの場合機能しません。

CSS を使用せずにスタイルを設定する方法はありますか。つまり、JavaFx API 自体を使用します。テキストの色には label.textFill(Paint p) が見つかりましたが、背景色、つまりラベル自体の色には何も見つかりませんでした。

4

2 に答える 2

1

CSSを使用せずに、つまりJavaFxAPI自体を使用してスタイルを設定する方法はありますか。

一部のスタイル(テキストの塗りつぶしなど)では、はい。背景色、背景画像、境界線などのAPIメソッドは、JavaFX 8がリリースされるまで使用できません(詳細については、JavaFX課題追跡システムのリージョンの背景と境界線のパブリックAPIを参照してください。誰でもアクセスにサインアップできます)。

これらは、連続して実行する必要がある場合、ほとんどの場合機能しません。

ラベルを強調表示してから、 PauseTransitionなどを使用せずに再度強調表示を解除して、強調表示されたラベルを表示する時間をユーザーに与えると、ユーザーの観点からは、強調表示されていないラベルだけが表示されるため、ユーザーの観点からは何も起こりません。 。


ユースケースはわかりませんが、ラベル内のテキストの一部のみを強調表示する場合、またはユーザーがマウスでテキストを強調表示できるようにする場合は、編集可能をfalseに設定してTextFieldを使用できます。


考えられる回避策

Java 8プレビューが機能せず、JavaFX CSS処理のバグが原因でエラーが発生する場合は、StackPane内にペインを配置してからラベルを配置してみてください。ペインの背景色を設定してlabel.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););、ペインの優先幅と高さをラベルの幅と高さにバインドし、必要に応じてペインのsetVisibleを切り替えます。

于 2013-02-19T18:23:46.977 に答える
0

最後に、回避策を見つけました。ハイライト解除とハイライトの間にシステムに時間を与えるために、PauseTransitionを指定する必要がありました。ラベルが既に強調表示されている場合、CSS は一時停止トランザクションの後にのみ効果を示しました。多分バグだと思います。ジラを提出します。ユーザーの視点からの遅延がないように、paustransition の期間は 1 ミリ秒程度に短くすることができます。

于 2013-02-23T17:55:55.117 に答える