Hallo zusammen,
ich beschäftige mich jetzt mal mit JavaFX (zum erstenmal) und wollte nun ein einfaches Menü erstellen mit Icons.
Das Menü war ja einfach auch die Grafik nur leider liegt der Text nun über der Grafik, in CSS würde ich das einfach mit einem Padding erledigen leider funzt das jedoch nicht
- ein -fx-padding:18; macht fast was ich will, nur leider wird das ja über alle gesetzt (top,left,bottom,right)
- ein -fx-padding: 0, 18, 0, 0; hat keine Auswirkung.
Meine FXML Datei:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox id="vbox" prefHeight="900" prefWidth="900" xmlns:fx="http://javafx.com/fxml"
fx:controller="MenuController">
<MenuBar fx:id="menuBar" onKeyPressed="#handleKeyInput">
<menus>
<Menu text="%datei">
<items>
<MenuItem text="%datei.neu" fx:id="neuItem"/>
<MenuItem text="%datei.oeffnen"/>
<MenuItem text="%datei.speichern"/>
<MenuItem text="%datei.speichernunter"/>
<SeparatorMenuItem />
<MenuItem text="%datei.beenden" onAction="#handleCloseApplication"/>
</items>
</Menu>
<Menu text="%bearbeiten">
<items>
<MenuItem text="%bearbeiten.ausschneiden"/>
<MenuItem text="%bearbeiten.kopieren"/>
<MenuItem text="%bearbeiten.einfuegen"/>
</items>
</Menu>
<Menu text="%extras">
<items>
<Menu text="%extras.sprache">
<items>
<MenuItem text="%extras.sprache.deutsch" fx:id="lang_de" onAction="#handleLanguage"/>
<MenuItem text="%extras.sprache.englisch" fx:id="lang_en" onAction="#handleLanguage"/>
</items>
</Menu>
</items>
</Menu>
<Menu text="%hilfe">
<items>
<MenuItem text="%hilfe.infoueber"/>
</items>
</Menu>
</menus>
</MenuBar>
</VBox>
[/XML]
Meine CSS Datei:
ich beschäftige mich jetzt mal mit JavaFX (zum erstenmal) und wollte nun ein einfaches Menü erstellen mit Icons.
Das Menü war ja einfach auch die Grafik nur leider liegt der Text nun über der Grafik, in CSS würde ich das einfach mit einem Padding erledigen leider funzt das jedoch nicht
- ein -fx-padding:18; macht fast was ich will, nur leider wird das ja über alle gesetzt (top,left,bottom,right)
- ein -fx-padding: 0, 18, 0, 0; hat keine Auswirkung.
Meine FXML Datei:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox id="vbox" prefHeight="900" prefWidth="900" xmlns:fx="http://javafx.com/fxml"
fx:controller="MenuController">
<MenuBar fx:id="menuBar" onKeyPressed="#handleKeyInput">
<menus>
<Menu text="%datei">
<items>
<MenuItem text="%datei.neu" fx:id="neuItem"/>
<MenuItem text="%datei.oeffnen"/>
<MenuItem text="%datei.speichern"/>
<MenuItem text="%datei.speichernunter"/>
<SeparatorMenuItem />
<MenuItem text="%datei.beenden" onAction="#handleCloseApplication"/>
</items>
</Menu>
<Menu text="%bearbeiten">
<items>
<MenuItem text="%bearbeiten.ausschneiden"/>
<MenuItem text="%bearbeiten.kopieren"/>
<MenuItem text="%bearbeiten.einfuegen"/>
</items>
</Menu>
<Menu text="%extras">
<items>
<Menu text="%extras.sprache">
<items>
<MenuItem text="%extras.sprache.deutsch" fx:id="lang_de" onAction="#handleLanguage"/>
<MenuItem text="%extras.sprache.englisch" fx:id="lang_en" onAction="#handleLanguage"/>
</items>
</Menu>
</items>
</Menu>
<Menu text="%hilfe">
<items>
<MenuItem text="%hilfe.infoueber"/>
</items>
</Menu>
</menus>
</MenuBar>
</VBox>
[/XML]
Meine CSS Datei:
HTML:
.root {
-fx-background-image: url("icons/background.jpg");
}
#myLabel{
-fx-font: 24px "Serif";
}
.menu{
-fx-font: 14px "Serif";
}
#neuItem{
-fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin";
-fx-background-image: url("icons/document-new.png");
-fx-background-repeat:no-repeat;
-fx-background-position: 5,center;
}
#neuItem .label{
-fx-border-width:15;
}
#neuItem:focused .label {
-fx-text-fill: #FFD175;
-fx-font-weight:bold;
}