私はPopoverを使っています。Popoverは、テキストフィールドのツールヒントヘルプディスプレイとして使用されています。 内容としてLabelとTextAreaが含まれており、ユーザーがテキストフィールドを入力すると作成されます。Controlsfx PopOverのスタイルとフォーカス
(FocusPropery.addListener
経由)私が使用してスタイルを適用します。
popOver.getRoot().getStylesheets().add(...)
(ドキュメントdocumentationに見られるような)
これはTextAreaのが、唯一のpartialyラベルのために動作します。
*{
-tb-dark-grey: rgb(32,38,44);
}
.root {
-fx-base: -tb-dark-grey;
-fx-background: -tb-dark-grey;
-fx-control-inner-background: -tb-dark-grey;
}
これは私のメインウィンドウには非常に良い作品:
私のスタイルは、このようになります。すべてのラベルとテキスト領域を含む。すべてが白いテキストで暗い青色の背景を取得します。 Popoverのラベルでは、テキストの色のみを白に変更しますが、背景は通常の明るいグレーのままです。
回避策としてTextAreaを使用してみました。これはスタイルのために働く。しかし、それは常にテキストフィールドからフォーカスを盗みます。これは何かを入力することが不可能になります。 TextAreaを無効にすると動作しますが、TextAreaのスタイルが変更されます。
私はすでにthis other questionにあるようなスタイルのリンゴを試してみました。 私はまた、フォーカスを取り戻そうとしましたが、これもうまくいきませんでした。
popup.Show(this.inputField)
this.inputField.requestFocus(); // also tried this with Platform.runLater
作品。それは基本的に私が最後に使った解決策です。ラベルを明示的にスキニングするというのは嫌いでした。より一般的な解決策として、私はポップオーバーを作成するためのヘルパークラスを作成しました。これは、目的のコンテンツをVBoxにラップし、そのVBoxの背景としてベースカラーを適用します。 'vBox.setStyle(" - fx-background-color:-tb-skin-base; ");'これは、ラベルだけでなく、コンテキストのすべての可能な形式で動作します。これは私のCSSをきれいに保ちます。また、TextAreaの色を指摘してくれてありがとう。 – FrankT