gpt4 book ai didi

java - JOptionPane 中的 JTextArea 在 Mac OS X 和 Windows 8 中大小不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:23 24 4
gpt4 key购买 nike

我喜欢 JOptionPane 的便利性,但不喜欢它不换行的事实。所以我决定实现来自 this question 的答案如下:

public static void main(String[] args)
{
String text = "one two three four five six seven eight nine ten ";
text = text + text + text + text + text
JTextArea textArea = new JTextArea(text);
textArea.setColumns(30);
textArea.setLineWrap( true );
textArea.setWrapStyleWord( true );
textArea.append(text);
textArea.setSize(textArea.getPreferredSize().width, 1); //Explanation for this line in the comments of the linked thread
JOptionPane.showMessageDialog(
null, textArea, "Not Truncated!", JOptionPane.WARNING_MESSAGE);
}

这在 Mac OS X 上工作得很好:

enter image description here

但在 Windows 8 上不起作用,因为窗口不会随着 JTextArea 的高度增加和更多行的增加而调整大小,从而将按钮推开:

enter image description here

我做错了什么吗?两个平台上的 Java Swing 行为是否不同?我该如何解决这个问题?

最佳答案

我发现问题实际上不是 JTextArea,而是我在程序的其他地方使用以下命令设置了 Windows 8 的默认外观

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

删除该行并默认为金属外观(就像我在顶部发布的代码片段中的情况一样)使一切看起来都正确。在我意识到上面 main 方法的对话框看起来与我的屏幕截图中的不一样之前,我什至没有想到这可能是问题所在。

我的一个使用 Windows 7 的 friend 尝试了包含该行代码的程序,结果发生了同样的事情。因此,这似乎是 Java 中的一个错误,至少在 Windows 7 和 Windows 8 中(我运行 Java 7u10,她运行 6 或 7)。

根据所提供的替代方案,我现在已经切换到使用带有 CSS 的 JLabel,因为它对于我的纯文本目的来说既快速又肮脏(而且我知道它可以跨平台工作),但我可能会迁移到 future 的 JEditorPanes。

关于java - JOptionPane 中的 JTextArea 在 Mac OS X 和 Windows 8 中大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com