下面的代码是创建jpopmpmenu
(未显示)的方法的一部分,它有几个选项,如撤消、重做、剪切、复制、粘贴等。。。
JMenuItem redoItem = new JMenuItem(new PrintAction());
redoItem.setText("Redo");
redoItem.setMnemonic(KeyEvent.VK_Y);
popupMenu.add(redoItem);
JMenuItem cutItem = new JMenuItem(new DefaultEditorKit.CutAction());
cutItem.setText("Cut");
cutItem.setMnemonic(KeyEvent.VK_X);
popupMenu.add(cutItem);
PrintAction
类仅用于调试目的,但这是我通常放置RedoAction
类的地方
public class PrintAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Yay it worked!");
}
}
如您所见,我已经将“重做”动作的助记词设置为Y,将“剪切”动作设置为X。
我使用的是DefaultEditorKit
中的内置方法CutAction
,它会自动将我的修改器设置为control,并在我想要的时候精确剪切文本。(CTRL-X)
这里的问题是:由于我的redoItem
不使用DefaultEditorKit,它将修饰符默认为ALT,并且只在显示popupMenu时重做文本。(ALT Y)
cutItem
正是我想要的方式。如何使重做项
具有相同的功能?我想要(CTRL Y)而不是(ALT Y),并且在不打开弹出菜单的情况下使用该操作。
我在这里读过类似标题的论坛,但它没有正确的答案。
文本组件具有用于基本剪切、复制和粘贴操作的默认键绑定,这就是为什么CTRL X可以工作的原因。
请参见:程序的键绑定,以显示所有Swing组件的默认键绑定。
您混淆了助记词
和加速器
。
助记符
是当菜单项可见时调用Action
的方式。它将是菜单项文本中带下划线的字符。这就是为什么您只指定助记符的字符。用于调用助记符的键依赖于操作系统。对于Windows,您使用Alt键。
加速器
允许您在菜单关闭时调用操作
,因此它可以避免用户首先显示菜单。它将是菜单项文本右侧显示的击键
。您可以指定任何按键组合,但通常在Windows中使用Ctrl“其他键”。
如果希望通过CTRL Yhtml" target="_blank">调用重做操作,则需要使用以下方法之一向菜单项添加加速器:
>
将加速器直接添加到零部件中。阅读Swing教程中有关如何使用菜单的部分以了解更多信息。
您也可以向Action
添加一个"加速器"。请阅读如何使用操作的教程。这将是首选方法,因为Action
的属性应该默认为组件。因此,您可以使用Action
创建一个JMenuItem
或JButton
,并且Action
的相关属性将应用于组件。
在Swing中设置焦点热键非常简单: 当用户按下时,这将使jtext字段成为焦点。它还高亮显示将触发焦点更改的角色。(在这种情况下,当按下时,“Plants”中的“P”带下划线。) 这太棒了。。。嗯,有点。在Mac电脑上,当用户按下(也是Mac键盘上的)时,助记符处于高位,但按下时不会触发焦点变化。但是,如果用户按下了控制选项p,则它会按“预期”工作,焦点也会改变。(另一方面,如果用户确实按了,当
问题内容: 有没有理由可以更改覆盖方法的访问修饰符?例如, 然后将package-private访问修饰符更改为, 我只是出于好奇而问这个问题。 问题答案: Java不允许您对access修饰符进行 更严格的限制 ,因为这会违反以下规则:子类实例应该可以代替超类实例使用。但是当涉及到 减少 访问限制时……好吧,也许超类是由另一个人编写的,他们没有想到您要使用其类的方式。 人们编写的程序以及编程时所
本文向大家介绍Java接口中的修饰符,包括了Java接口中的修饰符的使用技巧和注意事项,需要的朋友参考一下 示例 《 Oracle Java样式指南》指出: 当修饰符是隐式的时,不应将它们写出来。 (有关上下文和指向实际Oracle文档的链接,请参见Oracle Official Code Standard中的修饰符。) 此样式指南特别适用于界面。让我们考虑以下代码片段: 变数 所有接口变量都是具
我正在编写代码以匹配给定字符串或行的方法声明。这就是我的问题所在。当试图匹配修饰符时,当声明 工作。我一直都是这样 这就是我的问题。两者有什么区别,所有修饰符都一样吗?我相信这是有原因的,松散的顺序不是设计决定。 哦,如果有人知道匹配给定字符串的方法的最佳方法,请告诉我。谢谢。现在我正在使用正则表达式。
主要内容:final 修饰变量,final修饰方法,final修饰类,final 修饰符使用总结final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变,类似 C# 里的 sealed 关键字。 使用 final 关键字声明类、变量和方法需要注意以下几点: final 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量。 final 用在方法的前面表示方法不可以
private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只