簡體   English   中英

Java Swing L&F 原生鍵盤快捷鍵

[英]Java Swing L&F native keyboard shortcuts

如何在 Java Swing 應用程序中利用標准操作系統鍵盤快捷鍵? 我看到了如何將javax.swing.JToolbar或菜單欄添加到我的應用程序,但它似乎並未綁定到事實上的標准鍵盤快捷鍵(如用於保存的 Ctrl+S)。

根據其他人的答案,我想我會分享我在自己的應用程序中所做的事情......

首先,我有一個 class 變量,它的聲明和初始化如下:

private static int keyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();

接下來,在同一個class中,我有這個方法:

private static void addNewMenuItem(JMenu rootMenu, String itemName,
        int itemMnemonic, ActionListener itemActionListener) {
    JMenuItem menuItem = new JMenuItem(itemName, itemMnemonic);
    menuItem.setAccelerator(KeyStroke.getKeyStroke(itemMnemonic, keyMask)); // <-- Where I use keyMask.
    menuItem.addActionListener(itemActionListener);
    rootMenu.add(menuItem);
}

現在,創建新菜單所需要做的就是編寫如下內容:

addNewMenuItem(fileMenu, "Save...", KeyEvent.VK_S, saveListener);

正如您可能想象的那樣,在我設置包含數十個項目的菜單時,這是一種清理代碼的非常方便的方法。 我希望這對某人有所幫助。 (我沒有 go 動作路線,因為它需要我為每個動作設置一個新的 class ......這似乎是一個令人惱火的限制,必須繞過。我很確定這個代碼比那個代碼短將會。)

您可以使用Toolkit.getDefaultToolkit.getMenuShortcutKeyMask()獲取每個平台的正確修飾鍵( CtrlCommand等),但我不知道有什么方法可以找出操作的“標准”快捷方式是什么,而無需自己定義它們。

不過,像 SWT 這樣更擅長本地化的東西可能更擅長這種事情。

閱讀有關如何使用操作的 Swing 教程。

Action 基本上是一個帶有更多屬性的 ActionListener。 您可以為操作定義文本、助記符和加速鍵。 然后,您可以使用相同的操作來創建添加到工具欄的 JButton 或添加到菜單的 JMenuItem。

您應該手動將鍵盤快捷鍵綁定到所需的菜單條目。 例如在 JMenuItem 上使用 setAccelerator() 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM