我在这里遇到一个小麻烦......我正在尝试创建一个可滚动的文本区域,我使用以下代码片段实现了它,我相当确定它是可以的。如果你能告诉我它有什么问题我会很感激吗?
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);
问题很简单 - 一切正常 - 文字正常显示,滚动条显示正常,文字被包裹......但我无法滚动!
请指点几点?
谢谢! 巴乔
答案 0 :(得分:4)
问题是您要将textArea
的首选大小设置为显示文本所需区域的较小尺寸,以便不显示滚动条。
最好不设置首选大小,让JScrollPane
确定子组件的大小。滚动条将按预期显示。
您可以使用此构造函数:JTextArea(int rows, int columns)
附注:在进行StringBuilder
连接以提高性能时,最好使用String
。