我编写了一个 Java 应用程序,它每 10 秒从服务器接收一次信息。我想在表单上显示此信息。
目前我正在使用 JTextArea。但是,一旦 JTextArea 被填满,我就看不到添加到此 JTextArea 的新信息。我需要向 JTextArea 添加滚动条吗?或者是否有一个全新的 GUI 表单控件,建议显示每 x 秒添加的信息?
我编写了一个 Java 应用程序,它每 10 秒从服务器接收一次信息。我想在表单上显示此信息。
目前我正在使用 JTextArea。但是,一旦 JTextArea 被填满,我就看不到添加到此 JTextArea 的新信息。我需要向 JTextArea 添加滚动条吗?或者是否有一个全新的 GUI 表单控件,建议显示每 x 秒添加的信息?
DefaultCaret
试图使自己可见,这可能会导致JScrollPane
. 该方法可以更改默认插入符号行为DefaultCaret#setUpdatePolicy
。
假设你的变量名是textArea
,你只需要修改 caret 的策略:
DefaultCaret caret = (DefaultCaret) textArea.getCaret(); // ←
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); // ←
...
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(textArea);
* 谢谢,mKorbel
我需要向 JTextArea 添加滚动条吗?
将文本区域添加到JScrollPane
. 有关更多信息和示例,请参阅如何使用滚动窗格。
这是一个例子:
import java.awt.*;
import java.io.*;
import javax.swing.*;
class TextAreaScrolling {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
final JTextArea out =
new JTextArea(5,10); // suggest columns & rows
JScrollPane outScroll = new JScrollPane(out);
File f = new File("TextAreaScrolling.java");
try {
Reader reader = new FileReader(f);
out.read(reader, f);
} catch (Exception ex) {
ex.printStackTrace();
}
JOptionPane.showMessageDialog(null, outScroll);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}