JOptionPane中的java JTextArea在Mac OS X和Windows 8中具有不同的大小
我喜欢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上运行良好:
但在Windows 8上不起作用,因为窗口不会随着JTextArea高度的增加而调整大小,并有更多的多行,从而将按钮推开:
我做错什么了吗?Java Swing在这两种平台上的表现是否不同?我如何解决这个问题
# 1 楼答案
我发现问题实际上不是JTextArea,而是我在程序的其他地方使用以下命令设置了Windows 8的默认外观
删除这一行并默认为金属外观(就像我在顶部发布的代码片段中所做的那样),可以让一切看起来都正常。我甚至没有想到这可能是个问题,直到我意识到上面的主方法中的对话框与我的屏幕截图中的不一样
我的一个朋友使用Windows 7尝试了包含这行代码的程序,但同样的事情发生了。因此,这似乎是Java中的一个缺陷,至少有Windows 7和Windows 8(我运行Java 7u10,她运行6或7)
根据提供的备选方案,我现在已经转而使用带有CSS的JLabel,因为它对于我的纯文本目的来说既快又脏(我知道它可以跨平台工作),但我将来可能会迁移到JEditorPanes