Java 如何在JTextArea中滚动
我有一个JtextArea,我必须在其中追加文本,我希望在追加新文本时它向下滚动。我已经做了以下工作,但它不起作用Java 如何在JTextArea中滚动,java,swing,append,jtextfield,jtextarea,Java,Swing,Append,Jtextfield,Jtextarea,我有一个JtextArea,我必须在其中追加文本,我希望在追加新文本时它向下滚动。我已经做了以下工作,但它不起作用 showFrame = new JFrame("Gui Console"); showArea = new JTextArea(); showArea.setBorder(new TitledBorder("Console")); showArea.setPreferredSize(new Dimension(500, 400));
showFrame = new JFrame("Gui Console");
showArea = new JTextArea();
showArea.setBorder(new TitledBorder("Console"));
showArea.setPreferredSize(new Dimension(500, 400));
showArea.setMinimumSize(new Dimension(500, 400));
showArea.setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));
showArea.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
JScrollBar vertical = scrollPane.getVerticalScrollBar();
scrollPane.getVerticalScrollBar().setValue( vertical.getMaximum() );;
}
public void removeUpdate(DocumentEvent e) {
}
public void changedUpdate(DocumentEvent e) {
}
});
唯一有效的方法是设置
showArea.setPreferredSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));
但是窗户太大了,我不想要它 试试这个
JScrollPane scrollPane = new JScrollPane(showArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(500, 400));
add(scrollPane);
这可能对你有帮助。而
scrollPane
是用JFrame
或JPanel
添加的。无需showArea
您只需将JTextArea放在JScrollPane中即可
DefaultCaret caret = (DefaultCaret)yourTextArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test extends JFrame {
public Test() {
super("Test");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTextArea text = new JTextArea(5,20);
text.setWrapStyleWord(true);
text.setLineWrap(true);
JScrollPane jsp = new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(jsp);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
希望有帮助,Salam不要使用任何设置首选/最小/最大大小的方法。文本区域将在追加文本时自动重新计算首选大小。