java - 似乎无法将 JTextArea 添加到 JScrollPane 中?

标签 java swing jscrollpane jtextarea

我在这里遇到了一个小障碍...我试图创建一个可滚动的文本区域,并且我已经使用以下代码片段实现了它,我相当确定这是可以的。如果您能告诉我出了什么问题,我将不胜感激?

JTextArea textArea = new JTextArea();
textArea.setBackground(Color.WHITE);
textArea.setPreferredSize(new Dimension(600, 200));
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);

JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
String s = "";

for (int i = 0; i < 100; i++) {
    s += "asdflkjas;ldfkjas;lflsdkjfads;kfja;sdlfafsdf\n";
}

textArea.setText(s);

// method to add Component to a JPanel with GridBagLayout 
addComponent(scrollPane, 3, 0, 2, 2);

问题很简单 - 一切正常 - 文本正常显示,滚动条显示正常,文本换行...但我无法滚动!

请指点一下?

谢谢!! 巴乔

最佳答案

问题是您将 textArea 的首选大小设置为比显示文本所需的区域更小的大小,因此不会出现滚动条。

最好不要设置首选大小并让 JScrollPane 确定子组件的大小。滚动条将按预期出现。

您可以使用此构造函数:JTextArea(int rows, int columns)

<小时/>

旁注:在进行 String 连接时最好使用 StringBuilder 以提高性能。

关于java - 似乎无法将 JTextArea 添加到 JScrollPane 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431578/

相关文章:

java - SoapUI - 验证错误 java.lang.String 无法转换为 org.apache.xmlbeans.XmlError

java - JScrollPane 在其自身下绘制组件

java - 无法更改java应用程序的背景颜色

java - 如何将 ArchiveEntry 转换为 InputStream?

java - 如何在 AsyncTask 上调用执行?

java - SwingUtilities.invokeLater

java - Swing 中的 JTable 没有表头

java - 使用可变大小的内容调整 JScrollpane 的大小

jquery - jScrollPane 错误?页面刷新破坏了 jScrollPane 或其他因素影响了它

java - Autowiring bean 不工作上下文 :component scan