java fx 菜单栏上的文本
Text on java fx menu bar
我正在使用带有 fxml 文件的 JavaFx 编写应用程序以供查看。如何在菜单右侧添加文本(如附图)。 Scene Builder 只允许我添加菜单,但文本位于左侧(白框所在的位置),我必须禁用此菜单(因为它不是菜单)。
我也想更改此菜单的样式,但它不起作用。有可能只有一个菜单吗?
我的 fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<MenuBar xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl.controler.MainMenuController">
<menus>
<Menu fx:id="fileMenu" mnemonicParsing="false" text="%file">
<items>
<MenuItem fx:id="closeMenuItem" mnemonicParsing="false" text="%close" />
</items>
</Menu>
<Menu fx:id="menuHelp" mnemonicParsing="false" text="%help">
<items>
<MenuItem fx:id="aboutMenuItem" mnemonicParsing="false" text="%about.title" />
</items>
</Menu>
<Menu fx:id="loginName" mnemonicParsing="false" style="font-weight: bold; color: black;">
<items>
<MenuItem mnemonicParsing="false" text="Action 1" />
</items>
</Menu>
</menus>
</MenuBar>
附件:
如果您只想在右端显示文本,可以使用 Label
。例如,将 MenuBar
和 Label
包裹在 AnchorPane
中以获得所需的布局:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Label?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1">
<MenuBar AnchorPane.leftAnchor="0" AnchorPane.topAnchor="0">
<Menu text="File">
<items>
<MenuItem text="Close"/>
</items>
</Menu>
<Menu text="Help">
<items>
<MenuItem text="About"/>
</items>
</Menu>
</MenuBar>
<Label text="Some text" AnchorPane.rightAnchor="0" AnchorPane.topAnchor="0" AnchorPane.bottomAnchor="0"
style="-fx-font-weight: bold; -fx-text-fill: black; " />
</AnchorPane>
这给出了以下内容:
您可能想尝试一些 CSS 以获得您想要的样式,但这会按照您需要的方式放置所有内容。一种非常快速的样式设置方法,使 AnchorPane
的样式类似于菜单栏,只需将 styleClass="menu-bar"
添加到 AnchorPane
元素:
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" styleClass="menu-bar">
现在给出
对于(也许)更强大的方法,将 id="menu-bar-container"
添加到 AnchorPane
并将 id="menu-bar"
添加到菜单栏。然后下面的外部 CSS 会将默认菜单栏样式移动到锚定窗格:
#menu-bar {
-fx-padding: 0 ;
-fx-background-color: transparent ;
-fx-background-insets: 0 ;
-fx-background-radius: 0 ;
}
#menu-bar-container {
-fx-padding: 0.0em 0.666667em 0.0em 0.666667em; /* 0 8 0 8 */
-fx-background-color:
linear-gradient(to bottom, derive(-fx-base,75%) 0%, -fx-outer-border 90%),
linear-gradient(to bottom, derive(-fx-base,46.9%) 2%, derive(-fx-base,-2.1%) 95%);
-fx-background-insets: 0 0 0 0, 1 0 1 0;
-fx-background-radius: 0, 0 ;
}
我正在使用带有 fxml 文件的 JavaFx 编写应用程序以供查看。如何在菜单右侧添加文本(如附图)。 Scene Builder 只允许我添加菜单,但文本位于左侧(白框所在的位置),我必须禁用此菜单(因为它不是菜单)。 我也想更改此菜单的样式,但它不起作用。有可能只有一个菜单吗?
我的 fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<MenuBar xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl.controler.MainMenuController">
<menus>
<Menu fx:id="fileMenu" mnemonicParsing="false" text="%file">
<items>
<MenuItem fx:id="closeMenuItem" mnemonicParsing="false" text="%close" />
</items>
</Menu>
<Menu fx:id="menuHelp" mnemonicParsing="false" text="%help">
<items>
<MenuItem fx:id="aboutMenuItem" mnemonicParsing="false" text="%about.title" />
</items>
</Menu>
<Menu fx:id="loginName" mnemonicParsing="false" style="font-weight: bold; color: black;">
<items>
<MenuItem mnemonicParsing="false" text="Action 1" />
</items>
</Menu>
</menus>
</MenuBar>
附件:
如果您只想在右端显示文本,可以使用 Label
。例如,将 MenuBar
和 Label
包裹在 AnchorPane
中以获得所需的布局:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Label?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1">
<MenuBar AnchorPane.leftAnchor="0" AnchorPane.topAnchor="0">
<Menu text="File">
<items>
<MenuItem text="Close"/>
</items>
</Menu>
<Menu text="Help">
<items>
<MenuItem text="About"/>
</items>
</Menu>
</MenuBar>
<Label text="Some text" AnchorPane.rightAnchor="0" AnchorPane.topAnchor="0" AnchorPane.bottomAnchor="0"
style="-fx-font-weight: bold; -fx-text-fill: black; " />
</AnchorPane>
这给出了以下内容:
您可能想尝试一些 CSS 以获得您想要的样式,但这会按照您需要的方式放置所有内容。一种非常快速的样式设置方法,使 AnchorPane
的样式类似于菜单栏,只需将 styleClass="menu-bar"
添加到 AnchorPane
元素:
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" styleClass="menu-bar">
现在给出
对于(也许)更强大的方法,将 id="menu-bar-container"
添加到 AnchorPane
并将 id="menu-bar"
添加到菜单栏。然后下面的外部 CSS 会将默认菜单栏样式移动到锚定窗格:
#menu-bar {
-fx-padding: 0 ;
-fx-background-color: transparent ;
-fx-background-insets: 0 ;
-fx-background-radius: 0 ;
}
#menu-bar-container {
-fx-padding: 0.0em 0.666667em 0.0em 0.666667em; /* 0 8 0 8 */
-fx-background-color:
linear-gradient(to bottom, derive(-fx-base,75%) 0%, -fx-outer-border 90%),
linear-gradient(to bottom, derive(-fx-base,46.9%) 2%, derive(-fx-base,-2.1%) 95%);
-fx-background-insets: 0 0 0 0, 1 0 1 0;
-fx-background-radius: 0, 0 ;
}