【发布时间】:2015-04-24 11:47:19
【问题描述】:
我需要在 txt 文件中的文本区域显示一些文本。我已将所有行读入一个数组列表,并将它们附加到文本区域。
现在我需要慢慢向下滚动,如果它显示在某处的监视器上,人们将能够阅读。
我已经尝试使用在所有其他问题中找到的 defaultcaret 方法,但我无法让它工作。我也尝试过使用滚动窗格,但没有成功。
private void displayWords() {
JTextArea textArea = new JTextArea();
textArea.setPreferredSize(this.getPreferredSize());
textArea.setFont(font);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setAutoscrolls(true);
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
textArea.setBorder(BorderFactory.createEmptyBorder(50, 50, 50, 50));
for (String s : lines) {
textArea.append(s + System.getProperty("line.separator"));
}
/*
JScrollPane scrollpane = new JScrollPane(textare);
scrollpane.setPreferredSize(this.getPreferredSize());
scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scrollpane.setAutoscrolls(true);
scrollpane.setViewportView(textare);
*/
add(textArea);
repaint();
}
【问题讨论】:
-
JTextArea textArea = new JTextArea(); textArea.setPreferredSize(this.getPreferredSize());最好是JTextArea textArea = new JTextArea(5,20); // suggest a size -
可能有点复杂,但你会明白的 - for example
-
setSize 是因为它是一个带有网格布局的全屏面板。它只是为了填写。但是我尝试使用计时器来设置插入符号