Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JOptionPane.showInputDialog中更改默认字体的过程会产生不同的结果_Java_Fonts - Fatal编程技术网

Java 在JOptionPane.showInputDialog中更改默认字体的过程会产生不同的结果

Java 在JOptionPane.showInputDialog中更改默认字体的过程会产生不同的结果,java,fonts,Java,Fonts,在我70岁的时候,我决定学习Java,我必须说,这项任务有时给了我很多挫折。为了显示供选择的项目列表,我决定使用JOptionFrame类的showInputDialog选项,我发现只要通过调用UIManager将错误字体更改为单间隔字体,该选项就可以完美对齐:UIManager.put(“list.font”,new font)(“等距”,字体为普通,14)); 问题是,每当我在我认为被称为父框架的框架中插入列表时,字体返回其默认值时,这将停止工作。我可以毫无问题地插入其他对象,但不能插入列表

在我70岁的时候,我决定学习Java,我必须说,这项任务有时给了我很多挫折。为了显示供选择的项目列表,我决定使用
JOptionFrame
类的
showInputDialog
选项,我发现只要通过调用UIManager将错误字体更改为单间隔字体,该选项就可以完美对齐:
UIManager.put(“list.font”,new font)(“等距”,字体为普通,14));

问题是,每当我在我认为被称为父框架的框架中插入列表时,字体返回其默认值时,这将停止工作。我可以毫无问题地插入其他对象,但不能插入列表。我的问题是:我做错了什么?相关代码如下

UIManager.put("List.font", new Font( "monospaced",Font.PLAIN,14));

String input = (String) JOptionPane.showInputDialog(null, 
        "World Exchanges",
        "Please select one", JOptionPane.QUESTION_MESSAGE, null, 
        choices, choices[0]); // Initial choice

我怀疑这是不一致的外观缓存行为的结果

特定外观支持的默认值集由该外观定义和记录。此外,每个外观或外观提供的组件UI可能在其生命周期的不同时间访问默认值。一些外观可能会积极查找默认值,因此更改默认值可能不会产生影响安装look and feel后生效。其他look and feel可能会延迟访问默认值,因此对默认值的更改可能会影响现有的look and feel。最后,其他look and feel可能不会以任何方式从默认值表中配置自己。尽管如此,通常情况下,look and feel需要某些默认值,因此通常,由一个外观提供的组件UI不会与另一个外观一起工作

我的建议(基于此)是打这个电话:

UIManager.put("List.font", new Font("monospaced", Font.PLAIN,14));

在选择外观之后(如果您这样做的话),在实例化任何Swing组件之前。

我怀疑这是不一致的外观缓存行为的结果。
UIManager的javadocs说:

特定外观支持的默认值集由该外观定义和记录。此外,每个外观或外观提供的组件UI可能在其生命周期的不同时间访问默认值。一些外观可能会积极查找默认值,因此更改默认值可能不会产生影响安装look and feel后生效。其他look and feel可能会延迟访问默认值,因此对默认值的更改可能会影响现有的look and feel。最后,其他look and feel可能不会以任何方式从默认值表中配置自己。尽管如此,通常情况下,look and feel需要某些默认值,因此通常,由一个外观提供的组件UI不会与另一个外观一起工作

我的建议(基于此)是打这个电话:

UIManager.put("List.font", new Font("monospaced", Font.PLAIN,14));

选择外观后(如果您这样做),在实例化任何Swing组件之前。

70岁的时候,我决定学习Java——先生,这太棒了。发布一篇..@user1803551是正确的。如果没有其他人可以编译、运行和调试的MCVE,就很难弄清楚会发生什么。如果你成功地删除代码,直到它正常工作,那么你只需要添加一行代码即可将旧代码排成一行,直到问题再次出现,然后您将找到该行这就导致了问题。这将允许你包装一个合适的。发布它,有人会解决你的问题。在70岁的时候,我决定学习Java-这太棒了。发布一个..@user1803551是正确的。如果没有其他人可以编译、运行和调试的MCVE,你将很难弄清楚会发生什么。如果你成功地emove代码直到它工作,然后您只需逐行添加旧代码,直到问题恢复,然后您将找到该行这会导致问题。这将允许您装入一个适当的。发布后,有人会解决您的问题。这是一个安全的猜测,但正如您所说,只是一个猜测。我们不知道Swing线程何时开始或问题何时开始(“每当我在我认为被称为父框架的内容中插入列表时”对Swing没有意义).我大胆猜测,他们需要调用
SwingUtilities.updateComponentTreeUI(…)
问题应该开始后。@1803551谢谢你的建议,我随后将代码减少到不超过半打行。问题是这样问题就消失了。@PeterCarva请在@to ping a用户后使用全名,并回答相关讨论的位置(在本例的问题下)。这不是一个所有内容都附加在底部的论坛。@Stephen你可能是对的,因为它与我所说的内部方面有关,而我对此一无所知。我一直依赖默认的外观,我认为它是java。在玩游戏时,我注意到如果a更改default.fo的值它只影响一行,也就是说,@PeterCarva-当你尝试我的建议时,它是否达到了预期效果?这是一个安全的猜测,但正如你所说,只是一个猜测。我们不知道Swing线程何时开始或问题何时开始(“每当我在我认为被称为父框架的内容中插入一个列表”对Swing来说没有意义。我大胆猜测他们需要调用
SwingUtilities.updateComponentTreeUI(…)
问题应该开始后。@1803551谢谢你的建议,我随后将代码减少到不超过半打行。问题是这样问题就消失了。@PeterCarva请在@to ping a用户后使用全名,并回答相关讨论的位置(在本例中的问题下)