サーバーから 10 秒ごとに情報を受け取る Java アプリケーションを作成しました。この情報をフォームに表示したいと考えています。
現在、私は JTextArea を使用しています。ただし、JTextArea がいっぱいになると、この JTextArea に追加された新しい情報が表示されません。JTextArea にスクロール バーを追加する必要がありますか? または、x 秒ごとに追加される情報を表示するために推奨される、GUI フォーム用のまったく新しい別のコントロールがありますか?
サーバーから 10 秒ごとに情報を受け取る Java アプリケーションを作成しました。この情報をフォームに表示したいと考えています。
現在、私は JTextArea を使用しています。ただし、JTextArea がいっぱいになると、この JTextArea に追加された新しい情報が表示されません。JTextArea にスクロール バーを追加する必要がありますか? または、x 秒ごとに追加される情報を表示するために推奨される、GUI フォーム用のまったく新しい別のコントロールがありますか?
DefaultCaret
は自身を可視化しようとしますが、これにより、 内のテキスト コンポーネントがスクロールする可能性がありますJScrollPane
。DefaultCaret#setUpdatePolicy
デフォルトのキャレットの動作は、メソッドによって変更できます。
変数の名前が であると仮定すると、textArea
キャレットのポリシーを変更するだけで済みます。
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);
}
}