我试图让文字在消失之前短暂出现。这将是沿着的路线
1)将颜色设置为黑色
2)等待x秒秒
3)将颜色设置为背景颜色
我调用的方法是 repaint(),然后调用 paintComponent(Graphics painter)。只有按空格键才会调用 repaint()。
我想过尝试repaint();Thread.sleep(1000);repaint();
(我确实抓住了中断异常,但没有显示),但每个空格键只调用 paintComponent 一次。
有没有一种简单的方法可以做到这一点,还是这有点挑战?
答案 0 :(得分:2)
我会使用Swing Timer来安排重新绘制文本。
另外,我只想使用JLabel来显示文本。然后你只需使用setText(...)方法根据需要更改文本,组件将重新绘制。
答案 1 :(得分:1)
您需要覆盖面板中的paint方法并使其实现Runnable
,以便您可以在几秒钟后关闭文本。以下是一些示例代码:
import java.awt.Color;
import java.awt.Graphics;
import java.io.Exception;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyPanel extends JPanel implements Runnable{
private final static String TEXT = "HELLO WORLD";
private boolean on = true;
@Override
public void paint(Graphics g) {
super.paint(g);
if(on){
g.drawString(TEXT, 20, 20);
}
}
@Override
public void run() {
for(int i = 0 ; i< 2 ; i++){
paintImmediately(0, 0, getWidth(), getHeight());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
on = false;
}
}
}
public class App {
public static void main(String[] args) throws Exception {
JFrame f = new JFrame();
final MyPanel p = new MyPanel();
f.add(p);
f.setSize(100,100);
f.setVisible(true);
Thread t = new Thread(p);
t.start();
}
}