java为JOptionPane对话框设置助记符和热键
是否可以为JOptionPane对话框中的按钮分配热键和助记符?我希望能够在JOptionPane生成的消息对话框中,选择Yes、No和Cancel,按Y键点击Yes按钮,按N键点击No按钮,按escape键激活escape按钮。类似地,在带有“确定”和“取消”按钮的对话框中,我希望能够使用enter和escape来激活它们
我已经尝试将JButtons传递到JOptionPane的按钮对象数组中,并且已经设置了助记符。助记符工作,按钮在对话框中正确显示,但是,当它们被激活时,它们不能正常工作。最明显的是,它们没有处理对话框
向JOptionPane对话框的按钮添加热键和助记符的正确方法是什么
# 1 楼答案
将按钮作为参数而不是字符串发送进来
# 2 楼答案
您可以创建
JOptionPane
,然后循环浏览窗格的组件(子组件等),检查是否有任何组件是instanceof JButton
,如果是,则检查文本,并设置正确的助记符# 3 楼答案
按如下方式使用UIManager:
# 4 楼答案
您可以通过Swing Worker在父窗口中查找新窗口洞口。然后检查它是否是JDialog并提取按钮区域。然后为按钮指定键。这适用于JOptionPane的静态方法
这是Swing Worker类-只需实例化它并在调用之前执行它即可显示JOptionPane:
以下是两个帮助器类,可以使事情变得更干净:
及
以下是您将如何使用它:
以下是一个工作示例:
这将适用于所有JOptionPane静态方法。只要不在父组件的窗口中随机弹出窗口,这就可以正常工作。注意:JOptionPane的父组件不能为null
当然,实例化JOptionPane并对其进行自定义可能更容易。以下是实现此目的的类:
及
以下是您将如何使用它们:
“就数学定律所指的现实而言,它们是不确定的;就它们所确定的而言,它们并不指现实。”
爱因斯坦