我有一个Jpanel,我需要显示从文件中获取的文本。 但我必须逐字显示文字(每秒一个字)。我该怎么做? 我试图覆盖paintComponent方法,但它不能逐步显示文本..
答案 0 :(得分:1)
也许是更好的方法,但在这种情况下,让你自己的JPanel当然扩展JPanel,并覆盖 public void paint(Graphics g),所以你需要一个包含整个文本的String,你可以调用myWords的另一个String数组,其他名为currentWords的String,最后是一个计算你放的单词的计数器
所以你需要首先填充单词数组,比如,这可以在构造函数上,或者当它读取文件时
myWords = entireText.split(" ");
然后在paint方法中,在你的计时器内放置1秒钟
currentWords+= myWords[counter+1];
最后你把
g.drawString(currentWords,0,0);
最后的0,0,是X,Y坐标,所以也许你需要控制它,把文字放到一个新的行
答案 1 :(得分:1)
您正在寻找Timer(swing包中的那个)。假设您已准备好分词部分,以下伪代码片段是如何将它们连续附加到JTextArea的示例:
ActionListener l = new ActionListener() {
@Override
public void actionPerformed(...) {
textArea.append(words.remove(0));
}
};
Timer timer = new Timer(1000, l);
timer.start();
如果你真的想在自定义面板上手动绘制String,让它有一个append方法并在你的actionListener中调用它,比如
class MyPanel ....
String text;
public void append(String word) {
text += word;
repaint();
}
@Override
protected void paintComponent(...) {
super.paintComponent(..);
// draw the string
}
}