UI 属性不包含某些键

2023-12-11

我有以下问题。我需要获取 UI 属性:

UIManager.getString("OptionPane.okButtonText")

返回字符串"OK",并且它有效。但是,如果我迭代UIDefaults钥匙组,我从来没有拿到钥匙"OptionPane.okButtonText"。有谁知道为什么会发生?我得到了UIDefaults以三种不同的方式(UIManager.getDefaults(), UIManager.getLookAndFeel().getDefaults() and UIManager.getLookAndFeelDefaults()),但这些都不起作用。

Edit: 我也发现了这个属性列表班级的文件选择器,其中包含一些未出现在UIDefaults按键组。问题是:如何以编程方式获取所有这些属性?

Edit:代码示例:

UIDefaults defaults = UIManager.getDefaults();
String thekey = "OptionPane.okButtonText";
System.out.println(thekey + ": " + UIManager.getString(thekey));
for (Enumeration e = defaults.keys(); e.hasMoreElements();) {
    Object key = e.nextElement();
    System.out.println(key + ": " + defaults.get(key));
}

此代码返回打印这些属性。钥匙"OptionPane.okButtonText"不会出现在输出中。


这可能是资源包的问题:optionPane(以及 f.i. fileChooser 和其他)文本属性是从本地化包加载的。它们是(曾经是,不完全确定是否仍然如此)com.sun.swing.internal.plaf 下的内部类。也许那里出了什么问题......

这是有效的片段:

    String ok = "OptionPane.okButtonText";
    String text = ""; 
    text += " LAF: " + UIManager.getLookAndFeelDefaults().get(ok);
    text += " lookup: " + UIManager.get(ok);
    text += " default: " + UIManager.getDefaults().get(ok);
    System.out.println(text);

    // output, whereever I add that:
     LAF: OK lookup: OK default: OK

与当前安装的 LAF 无关。我的系统是win/vista,我的默认语言环境

编辑:只是为了澄清 - 本地化资源不一定是 key()/entrySet() 中的直接条目,这些是 Hashtable 中的方法,在 UIDefaults 中不会被覆盖。因此,虽然我的代码片段中的查找应该始终有效,但查询枚举是错误的 - 条目不在那里,而是在由 ResourceBundles 提供的一些缓存映射中。

Edit2:添加了 ok 的 def (认为在谈论该键几个小时后这将是显而易见的:-)

Edit3:为了进一步的实验,我们可能应该查找一个在区域设置中比“OK”不同的值,例如取消按钮文本

编辑4(重大突破前的最后一次,承诺:-) - 至于“如何找到所有本地化值”,如果不诉诸肮脏的手段(又名:实现细节)是不可能的。我能想到的唯一方法是查看已加载的资源包,例如

    import com.sun.swing.internal.plaf.basic.resources.basic;

    String cancel = "OptionPane.cancelButtonText";
    ListResourceBundle bundle = new basic();
    for (String key : bundle.keySet()) {
        if(cancel.equals(key)) {
            System.out.println(key
                    + ": " + bundle.getString(key));

        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UI 属性不包含某些键 的相关文章

随机推荐

  • 创建具有抗锯齿功能的圆或圆盘以用于视网膜显示

    我已经使用创建了一个圆圈CGContextFillEllipseInRect from CoreGraphic 我正在使用这个圆圈 实际上是一个磁盘 来替换thumbImage of an UISlider 默认情况下应用抗锯齿 但我的 i
  • ASP.NET 网页使用 html 扩展

    我正在尝试使用ASP NET 网页理解使用静态 html 文件 大约 500 个 的现有站点 不幸的是 我的 SEO 人员要求网站维护其现有的目录 文件名 因此我需要使用 html 找到后这个例子 我尝试添加扩展名web config un
  • Windows Phone 获取服务器源代码

    我正在尝试获取网站的源代码 在 Windows 应用程序中 一个简单的 http 请求就足够了 然而在 Windows Phone 中 情况要复杂得多 我在谷歌上搜索了很多 但没有得到明确的答案 这是我尝试过的 但没有取得很大成功 publ
  • 使用“cat”将非英语字符写入.html文件(在R中)

    这是显示问题的代码 myPath getwd cat abcd append T file paste myPath temp1 html sep This is fine cat br br br append T file paste
  • python 如何检查当前时间是否在范围内?

    我需要检查当前时间是否在时间范围内 最简单的情况 time end gt time start if time 6 0 lt now time lt time 12 00 print 1 但是 当用户输入结束时间小于开始时间的时间范围时 就
  • 无法将 datagridview 的行可见设置为 false

    我有一个DataGridView我设置的地方DataSource taskerEntities te new taskerEntities var OMsMasterDescriptiveIndicators te MyTable Sele
  • LINQ - 获取所有父母的所有子记录

    我有两个模型 class Foo public List
  • Python 在循环内从 Csv 创建 XML

    我正在尝试从 csv 创建 xml 文件 CSV CatOne CatTwo CatThree ProdOne ProdTwo ProdThree ProductOne ProductTwo ProductThree 所需的 XML
  • 方案中模 m 的乘法逆元

    我已经编写了模 m 的乘法逆元的代码 它适用于大多数初始情况 但不适用于某些情况 代码如下 define inverse x m let loop x modulo x m a 1 cond zero x f x 1 a else let
  • Karate 支持 Neo4j 数据库吗?

    想知道是否空手道支持 Neo4j 数据库 如果是的话 希望有一个前任 功能会很有帮助 Karate 支持任何Java代码这样你就可以间接地做任何你想做的事情 请看一下这个 JDBC 示例 它将帮助您入门 dogs feature 您将需要编
  • 如何根据用户输入的高度和宽度打印字符串

    我确信这是一个简单的问题 但我的教授在解释事情方面很糟糕 因为我是计算机科学的新手 所以我需要帮助 任务是创建一个函数 根据用户选择的高度和宽度以不同的格式打印 返回用户给出的字符串 例如 如果用户字符串是 lt vvv 相同功能的另一个例
  • VBA - 在子程序中调用 Dir() 时使用 Dir() 循环

    我正在使用以下命令循环访问文件夹 Dim file As Variant file Dir myFolder While file lt gt mySub file lt this sub use Dir hundreds of times
  • 仅为我的公司页面创建 Facebook 标签

    我已经创建了一个公司页面 并想要创建一个只能安装在我的页面上的自定义选项卡 我知道如何创建应用程序并安装自定义选项卡 如何设置该应用程序以便只有我可以安装它 谢谢 对应用程序的 页面选项卡 URL 通过页面选项卡加载应用程序时使用的 URL
  • Tabhost 中的 ProgressDialog 不工作

    我在我的活动中使用三个进度对话框 OnCreate 当导航到下一页时 当导航到上一页时 但是当我第一次单击下一页按钮时 应用程序因错误而崩溃WINDOW LEAKED 这是我的代码 请有人告诉我做错了什么 public class Requ
  • 从 OleVariant 获取 IStream

    我正在使用 Delphi 和 WinHTTP 来执行 HTTP 请求以从 Internet 下载一些文件 并且我可以执行该请求 但我不知道如何从返回的 OleVariant 获取 IStreamResponseStream 我花了很多时间谷
  • Ant:以编程方式创建 JUnit 报告任务

    我使用 Ant API 以编程方式创建任务 但我还没有找到创建 JUnit 报告任务的类 简而言之 我想要使用 Ant API 的等效代码
  • PHP:一个 mysql_query 语句中的多个 SQL 查询

    所以我有一个需要使用 mysql query 加载的 SQL 转储文件 不幸的是 不可能用它执行多个查询 gt 不能假设mysql 命令行客户端 mysql help 已安装 用于直接加载 SQL 文件 gt 不能假设mysqli扩展已安装
  • Javascript自动更新页面?

    任何人都可以给我一个方向 我想知道如何像 Facebook 那样自动更新页面以获取新的状态更新 新的喜欢等 即 如果您在窗口中打开一个状态并且用户单击 喜欢 则 1 喜欢会自动出现 提前致谢 这些是使用 PUSH 模型 订阅 发布 完成的
  • 在 Eclipse 中运行 Java 程序,就像从命令行一样

    因此 我发现了一些与我类似的问题 但没有一个具体解决了我遇到的问题 我的程序将由命令行参数调用 例如 java Main inputFile txt inputFile2 txt 我正在 Eclipse 中编程并使用public void
  • UI 属性不包含某些键

    我有以下问题 我需要获取 UI 属性 UIManager getString OptionPane okButtonText 返回字符串 OK 并且它有效 但是 如果我迭代UIDefaults钥匙组 我从来没有拿到钥匙 OptionPane