gpt4 book ai didi

java - 文本区域缓慢自动向下滚动

转载 作者:行者123 更新时间:2023-11-30 08:53:15 25 4
gpt4 key购买 nike

我需要在 txt 文件的文本区域显示一些文本。我将所有行读入数组列表,并将它们附加到文本区域。

现在我需要慢慢向下滚动,如果它显示在某个地方的显示器上,人们可以以这样的速度阅读。

我已经尝试使用我在所有其他问题中找到的 defaultcaret 方法,但我无法让它工作。我也尝试过使用滚动 Pane ,但没有成功。

 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 放在 JScrollPane 中。启动一个计时器并在每个 actionPerformed() 上通过垂直滚动条的 setValue() 向下滚动

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TAScroll {
public static void main(String[] args) {
JFrame f=new JFrame();
JTextArea ta=new JTextArea();
for (int i=0;i<50; i++) {
ta.append(i+"\n");
}
final JScrollPane scroll=new JScrollPane(ta);
f.add(scroll);

Timer t=new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
scroll.getVerticalScrollBar().setValue(scroll.getVerticalScrollBar().getValue()+10);
if (scroll.getVerticalScrollBar().getValue()>=scroll.getVerticalScrollBar().getMaximum()) {
((Timer)e.getSource()).stop();
}
}
});

t.start();

f.setLocationRelativeTo(null);
f.setSize(200,100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

关于java - 文本区域缓慢自动向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846717/

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