使文本在JPanel中短暂显示

时间:2011-01-02 13:06:31

标签: java swing text

我试图让文字在消失之前短暂出现。这将是沿着的路线 1)将颜色设置为黑色
2)等待x秒秒 3)将颜色设置为背景颜色

我调用的方法是 repaint(),然后调用 paintComponent(Graphics painter)。只有按空格键才会调用 repaint()

我想过尝试repaint();Thread.sleep(1000);repaint();(我确实抓住了中断异常,但没有显示),但每个空格键只调用 paintComponent 一次。

有没有一种简单的方法可以做到这一点,还是这有点挑战?

2 个答案:

答案 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();
 }
}