【问题标题】:Text on java fx menu barjava fx 菜单栏上的文本
【发布时间】:2016-02-23 11:33:21
【问题描述】:

我正在使用带有 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>

附件:

【问题讨论】:

    标签: css javafx fxml


    【解决方案1】:

    如果您只想在右端输入文字,您可以使用Label。将MenuBarLabel 包裹在例如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" 添加到AnchorPaneid="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 ;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多