合成器外观和感觉中的默认按钮输入映射?

2023-12-29

我正在尝试使用 UIManager 获取并清除一些默认键绑定,以便空格键不会激活我的 JButtons,如所解释的here https://stackoverflow.com/questions/12133795/removing-default-jbutton-input-map。问题是,可能是由于我的合成器外观和感觉,(InputMap)UIManager.get("Button.focusInputMap");返回一个null。有谁知道一种以其他方式轻松清除组件输入映射的方法,或者为什么 UIManager 在这种情况下返回 null?任何提示表示赞赏,预先感谢。


首先:我喜欢装饰 StyleFactory 的想法,正如 @David 在另一个答案中所建议的那样:-) - 所以如果可行的话,建议使用这个方向。

无论如何,忍不住尝试一下:看起来 Nimbus(可能还有其他基于 Synth 的 LAF)需要覆盖这些默认值极其在生命周期的早期:只有在之前完成的情况下,他们才会接受any组件实际上已创建

// setting LAF
InteractiveTestCase.setLAF("Nimbus");
// tweak inputMap, immediately after setting the ui is fine
// uncomment the following line and it doesn't work
// new JPanel();
InputMap inputMap = (InputMap) UIManager.get("Button.focusInputMap");
inputMap.put(KeyStroke.getKeyStroke("SPACE"), "do-nothing");

如果 UIManager 此时没有返回 inputMap,我会将其视为自定义 LAF 的不当行为,并会尝试进一步挖掘发生这种情况的原因。您可以尝试的另一件事是设置一个全新的 inputMap (这将具有在 LAF 切换中幸存的优点,因为它不是 UIResource,例如:

// setting LAF
InteractiveTestCase.setLAF("Nimbus");
// tweak inputMap, immediately after setting the ui is fine
InputMap inputMap = (InputMap) UIManager.get("Button.focusInputMap");
InputMap custom = new InputMap();
if (inputMap != null) {
    // copy all bindings to custom
    ...
} else {
    // add the binding we know of (as implementation detail)
    custom.put(KeyStroke.getKeyStroke("released SPACE"), "released");
}
// overwrite the binding you want to change
custom.put(KeyStroke.getKeyStroke("SPACE"), "do-nothing");
// set the custom map
UIManager.put("Button.focusInputMap", custom);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合成器外观和感觉中的默认按钮输入映射? 的相关文章

随机推荐

  • iPhone SDK - 将触摸从 UIViewController 转发到子视图

    我有一个UIViewController其子类为UIView上面叫customSubView1 然后在 customSubView1 上我有另一个子类UIView called customSubView2 当我放置时 我可以捕获所有子视图
  • 违反 MISRA 2012 - 类型不匹配(规则 10.1、10.4)

    我面临着 MISRA C 2012 违规 我无法理解 以下是代码 define I2C CCRH FS uint8 t 0x80 define I2C CCRH DUTY uint8 t 0x40 define I2C CCRH CCR u
  • UIActionSheet 与 swift

    我创建了一个操作表 但问题是没有调用委托方法 myActionSheet UIActionSheet myActionSheet addButtonWithTitle Add event myActionSheet addButtonWit
  • 汇编语言 - masm32 - 乘法

    我将 3 个数字相乘 即使有进位也能很好地工作 我想添加第四个数字来相乘 只是为了学习目的 在我乘以 3 个数字后 我转移到 EDX 并打印 效果很好 在我添加第四个数字后 我认为我正在乘以 32 位 x 32 位 那么它存储到 EDX E
  • 通过接口动态创建类

    我有一些经验 Net Expressions 当我能够动态生成方法时 没关系 很好 但现在我需要生成一个完整的类 似乎唯一的方法就是发出整个IL 这是完全不可接受的 不可能支持 假设我们有以下接口 public interface IFoo
  • 如何以及在哪里处理关联记录的更新过程?

    我正在使用 Ruby on Rails 4 我想通过以下方式正确处理关联记录的更新和创建过程update attributes方法 也就是说 我有以下内容 Model class Article lt ActiveRecord Base h
  • 替换除
     标记之间的换行符之外的换行符                
                

    我正在寻找替换 删除给定字符串中的所有换行符 嵌套在 a 中的换行符除外 pre 标签 因此对于以下字符串 var text Some contents which is formatted over multiple lines but
  • 将 3d 4x4 旋转矩阵转换为 2d

    假设我们有一个 4x4 矩阵 其索引如下 00 01 02 03 10 11 12 13 20 21 22 23 30 31 32 33 如何将该矩阵中包含的旋转数据 忽略 z 轴 如果有帮助的话 转换为单个 2d 旋转角度 以弧度为单位
  • VSTS 缺少某些构建标志:env:BUILD_SOURCEVERSIONMESSAGE

    在我的 Visual Studio Team Services 构建中 我从 bitbucket 存储库中提取 我正在尝试获取提交消息并在 powershell 脚本中使用它 在我的 powershell 脚本中 我有以下代码 param
  • 不明白这个 TypeError: 'list' object is not callable

    我有一个名为im py其中包含几个函数和几个类 第一个函数和类失败了 TypeError list object is not callable 问题似乎是在函数中创建的列表的第一个元素 然后将其传递给类 列表的大部分可以由类处理 但第一个
  • 如何在 C# 中使用管道和 let 参数进行 $lookup (MongoDB.Driver 2.7.2)

    我需要在我的 C 代码中在 MongoDB 中运行以下查询 我使用 MongoDB Driver 2 7 2 和 MongoDB 4 0 我想使用 lookup 而不是 project unwind 以防止命名集合的每个可能字段 db ge
  • std::initializer_list 的实现

    我一直在研究如何initializer list已实现 所以我找到了标准的第 18 9 节 并找到了一个看起来足够简单的界面 我认为制作我自己的版本 我命名为 会很有启发性MyNamespace InitializerList和一个用例 t
  • 在mfc中如何将控件置于前面

    如何更改 MFC 中控件的 Z 顺序在设计时 即我无法使用 SetWindowPos 或在运行时执行此操作 我想在设计器中查看更改后的 z 顺序 即使我必须诉诸直接编辑 rc 代码 我有一个 MFC 对话框 要向其中添加控件 如果控件的边缘
  • 在 tvOS 上对 Dropbox 进行身份验证

    我在我的 ios 移动应用程序中使用 dropbox sdk 它使用 dropbox 身份验证从我的应用程序中的 dropbox 中获取用户文件 它在我的 ios 应用程序上完美运行 并上传到苹果商店 我想让它也适用于 tvos 苹果商店
  • EC2 上的轻度、中度或重度利用率预留实例之间有什么区别?

    他们讨论了不同的利用率实例 但除了价格之外 我找不到任何一个地方可以实际说明轻利用率大型实例和重利用率大型实例之间的区别 有人可以告诉我有什么区别吗 实例是相同的 这只是价格差异 因此如果您知道自己将大量使用该实例 则可以通过支付预付费用来
  • Mandelbrot 集渲染的平滑频谱

    我目前正在编写一个程序来生成非常巨大的 65536x65536 像素及以上 Mandelbrot 图像 我想设计一个光谱和着色方案来使它们公正 这维基百科精选曼德尔布罗图像 http en wikipedia org wiki File M
  • 最有效的多重纹理方法 - iOS、OpenGL ES2、优化

    我正在尝试找到在 iOS 上处理 OpenGL ES2 中多重纹理的最有效方法 我所说的 高效 是指即使在较旧的 iOS 设备 iPhone 4 及更高版本 上也能实现最快的渲染 但同时还要平衡便利性 我考虑过 并尝试过 几种不同的方法 但
  • 单个 Logger 的每个附加程序的日志级别

    是否可以根据appender为单个Logger配置不同的日志级别 我意识到这与此类似question https stackoverflow com questions 1839647 how to configure log4j to l
  • 何时在 Spring 中使用自动装配

    我正在看书专业春季3 https rads stackoverflow com amzn click com 1430241071 其中有一段确实让我很困惑 该段落是关于 Spring 中的自动装配 以下是摘录 在大多数情况下 是否应该使用
  • 合成器外观和感觉中的默认按钮输入映射?

    我正在尝试使用 UIManager 获取并清除一些默认键绑定 以便空格键不会激活我的 JButtons 如所解释的here https stackoverflow com questions 12133795 removing defaul