当前位置: 首页 > 知识库问答 >
问题:

JavaFX菜单-第一个字母,下划线装饰

周龙光
2023-03-14

有什么建议吗?

共有1个答案

况经纬
2023-03-14

助记术背景

您在图像中指向的是键盘助记符。JavaFX确实支持助记符,但您只能在本地使用助记符的平台上看到它们,并且您已经将应用程序编程为使用助记符。例如,Windows程序通常使用助记符,因此当您在Windows上运行应用程序时,您将在JavaFX应用程序中看到助记符,但OS X程序通常不使用助记符,因此如果您在OS X上运行JavaFX应用程序,您可能不会看到显示助记符。

还要注意,在Windows上,即使您已经定义了上述助记符,您也需要按alt键才能看到JavaFX应用程序中带下划线的助记符(这也是标准Windows应用程序如记事本的工作方式,因此JavaFX在这方面没有什么不同)。

只要将标记项的助记符解析设置为true,并在html" target="_blank">标签文本中放置下划线,任何被标记的东西(即每个带有文本的控件)都可能显示助记符并对其做出反应。

也定义加速器

苹果的开发指南鼓励在为OS X编写应用程序时使用加速器而不是助记符。因此,为了让应用程序更好地跨平台工作,我建议为菜单项提供加速器,即使您已经有了在Windows下使用的助记符。在JavaFX中,您可以在菜单项上设置Accelerators。有关在JavaFX应用程序中使用加速器的更多信息,请参见使用JavaFX2.2助记符(和加速器)的答案(它实际上演示了加速器的使用,而不是助记符的使用...)。

示例应用程序

演示在JavaFX应用程序中菜单上使用加速器和助记符。请注意,在示例中,它如何使用keycombination.keycombination(“shortcut+n”)来指定快捷键快捷方式。这是一种在JavaFX中指定标准OS快捷键的独立于OS的方式。在Windows中,快捷方式将映射到Ctrl。在OS X中,快捷方式将映射到OS X命令键。

屏幕截图演示了在Windows7上运行应用程序,并按Alt键来显示助记符。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class MnemonicAcceleratedMenu extends Application {
    @Override
    public void start(Stage stage) {
        Menu fileMenu = new Menu("_File");
        MenuItem newFileMenuItem = new MenuItem("_New...");
        newFileMenuItem.setAccelerator(
            KeyCombination.keyCombination("SHORTCUT+N")
        );
        newFileMenuItem.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Something new, this way comes");
            }
        });
        fileMenu.getItems().add(
                newFileMenuItem
        );

        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().setAll(
                fileMenu
        );

        VBox layout = new VBox(menuBar);
        layout.setPrefSize(200, 100);

        stage.setScene(new Scene(layout));
        stage.show();
    }

   public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • 问题内容: 我有两个下拉菜单,其中的选项不是从数据库中获取的。 第一个,让用户选择一个类别。 第二个选项取决于第一个下拉菜单中的选择。例如,如果用户选择“ 第一个” 选项,则第二个下拉列表将显示 但是当用户改变主意,或先选择 第二个 选项时,第二个下拉列表现在将显示 我的问题是我该如何实现?不用数据库就可以做到吗? 谢谢! 问题答案: 参见下文,查看 不使用数据库 的 工作示例 。 使用MySQL

  • 问题内容: 如何获得给定字符串的每个单词的首字母? 我找到了javascript方法,但不确定如何将其转换为php。 问题答案: 在空格上,然后使用表示法以数组形式访问结果字符串: 如果您期望多个空格可以分隔单词,请改用 或者,例如,如果非空格字符分隔单词(),请同时使用:

  • 我想用下划线替换字符串中除第一个单词外的所有字符,但我的代码用下划线替换所有字符。 预期结果:你好_________

  • >>> class MyClass(): ... def __init__(self): ... self.__superprivate = "Hello" ... self._semiprivate = ", world!" ... >>> mc = MyClass() >>> print mc.__superprivate Traceback (most recen

  • 问题内容: 我正在尝试使用jQuery,CSS或PHP来增加字符串中每个单词的第一个字母的字体大小。例如,我将在h1标签中有一个标题,如下所示: 我想通过文本将所有文本都转换为大写(CSS没问题),然后增加出现在字符串中的第一个字母的字体大小。使用CSS或jQuery,是否可以选择每个单词的首字母并进行修改? 问题答案: $(document).ready(function() { var wor

  • 效果网址 : https://dzone.com 我看了一下, 这个效果感觉挺简单的, 但是自己试了以下感觉还是挺难的 他们网页用到了 js, 不过我是用 css 实现的 我参照着自己做的代码如下 但是效果还有有些诧异, 为了更好看出效果我把过渡时间调整3秒 有没有大佬有好一点的实现方案? 用css或者js都可以