gpt4 book ai didi

java - 将文本添加到我的 JScrollPane/JArea 时如何自动滚动?

转载 作者:行者123 更新时间:2023-11-29 07:51:04 25 4
gpt4 key购买 nike

我在一个小应用程序中有一个 JTextArea,它显示所有异常 e.getMessage 和其他内容。但是,JScrollPane 不显示最新结果。我必须手动滚动它才能看到刚刚发生的事情。

我希望它与 Eclipse 控制台完全一样

如何设置光标?

这是我的代码

publiv void createGUI)( {

JTextArea progress = new JTextArea("");

JScrollPane jsp = new JScrollPane(progress);
jsp.setBounds(320, 10, 280, 300);
j.add(jsp) ;

JScrollBar max = jsp.getVerticalScrollBar() ;
max.setValue(max.getMaximum() ) ; // I tried this as suggested by Yasmani Llanes, but it did not work
...

最佳答案

尝试在文本末尾设置插入符位置:

progress.setCaretPosition(progress.getText().length()) 

以下示例适用于我:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;


public class Test extends JFrame {
private JTextArea txtTest;

Test() {
this.setSize(500, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());

JScrollPane pane = new JScrollPane();
txtTest = new JTextArea();
pane.setViewportView(txtTest);
this.add(pane, BorderLayout.CENTER);

JButton btnAddText = new JButton("Add Text");
btnAddText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txtTest.setText(txtTest.getText() + "\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sagittis id nibh vel rhoncus. ");

String text = txtTest.getText();

txtTest.setCaretPosition(text != null ? text.length() : 0);
}
});
this.add(btnAddText, BorderLayout.SOUTH);

this.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}

关于java - 将文本添加到我的 JScrollPane/JArea 时如何自动滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21169200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com