似乎无法将JTextArea添加到JScrollPane?

时间:2012-11-17 14:38:45

标签: 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);

问题很简单 - 一切正常 - 文字正常显示,滚动条显示正常,文字被包裹......但我无法滚动!

请指点几点?

谢谢! 巴乔

1 个答案:

答案 0 :(得分:4)

问题是您要将textArea的首选大小设置为显示文本所需区域的较小尺寸,以便不显示滚动条。

最好设置首选大小,让JScrollPane确定子组件的大小。滚动条将按预期显示。

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


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