2016-04-12 30 views
2

アイコン化されたJavaFXメニュー項目ラベルを作成しようとしました。メニュー項目ラベルとアクセラレータラベルの両方にアイコンが複製されています。 ここに私の問題を説明するイメージがあります。ここでJavaFxメニュー項目アクセラレータJavafx css

enter image description here

のJavaFX CSSのコードです:

.menu-item > .label { 

} 

#miRestore .label{ 
    -fx-graphic: url("/img/Upload_16x16.png"); 
} 
#miBackup .label { 
    -fx-graphic: url("/img/Flash%20Disk_16x16.png"); 
} 
#miClose .label { 
    -fx-graphic: url("/img/Delete_16x16.png"); 
} 

#miSettings .label { 
    -fx-graphic: url("/img/Settings_16x16.png"); 
} 

#miRegistre . label{ 
    -fx-graphic: url("/img/Help_16x16.png"); 
} 
+0

明らかに、MenuItemはアクセラレータテキストを保持するために2番目のLabelを内部的に使用しています。 '.label:first-child'を使うセレクタを変更すると動作するかもしれません。 – VGR

+0

@VGR、残念ながら、これは私にとってはまったく機能しません。メニューアイコンも消えます。 –

+0

信頼できるアプローチは、カスタム[スタイルクラス](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#getStyleClass--)を持つNodeにMenuItemグラフィックを設定することです。 )、 '.label'の代わりに(あるいはそれに加えて)あなたのCSSでそれを使用してください。 – VGR

答えて

2

私はこれまで信頼性の高いソリューションを発見した: は(スタイルクラスを添付して、シーンビルダ/ FXML(あなたが好むものは何でも)で をidではない)をアイコンにしたいすべてのメニューに追加します。

:全ての第2の画像を削除するには、次の追加、CSSファイルの終わりに

.yourClassName > .label{ 
    -fx-graphic: url("yourImageUrl"); 
} 

: は今、あなたはアイコンで、すべての項目について、以下のCSSを入れているメニューバーにスタイルシートを追加します

.context-menu .accelerator-text{ 
    -fx-graphic: none; 
} 

これは、すべての-accelerator-textの-fx-graphicを 'none'に設定します。つまり、基本的に画像をもう一度削除します。

これで、アイコンの前にアクセラレータのテキストではなく、アイテムテキスト(Item Text)のみが表示されます。 sample

私のメニューバーに追加CSSスタイルシート、 を以下、私のメニューに追加CSSスタイルクラスに対応した結果である:私はあなたのための小さな例を作ったあなたにこれがどのように行われるかについて具体的なアイデアを与えることを - 項目:

.newIcon > .label{ 
    -fx-graphic: url("px16/file.png"); 
} 
.openIcon > .label{ 
    -fx-graphic: url("px16/folderEmpty.png"); 
} 
.closeIcon > .label{ 
    -fx-graphic: url("px16/minus.png"); 
} 
.saveIcon > .label{ 
    -fx-graphic: url("px16/save.png"); 
} 
.saveAsIcon > .label{ 
    -fx-graphic: url("px16/folder.png"); 
} 
.quitIcon > .label{ 
    -fx-graphic: url("px16/error.png"); 
} 
.context-menu .accelerator-text{ 
    -fx-graphic: none; 
} 

これは私の最初の答えStackOverflowで、私はこれが誰かに役立つことを願っています。

関連する問題