Сделать текст кратко отображаться в JPanel - PullRequest
2 голосов
/ 02 января 2011

Я пытаюсь сделать текст на короткое время, прежде чем он исчезнет. Это было бы по линии
1) Установите цвет на черный
2) ждать х количество секунд
3) установить цвет фона

Я вызываю метод repaint () , который затем вызывает paintComponent (Graphics Painter) . repaint () вызывается только если я нажимаю пробел.

Я думал о попытке repaint();Thread.sleep(1000);repaint(); (я ловлю исключение прерывания, только не показано), но он вызывает paintComponent один раз за пробел.

Есть ли простой способ сделать это или это что-то немного сложное?

Ответы [ 2 ]

2 голосов
/ 02 января 2011

Я бы использовал Swing Timer , чтобы запланировать перерисовку текста.

Кроме того, я бы просто использовал JLabel для отображения текста. Затем вы просто используете метод setText (...), чтобы изменить текст по вашему желанию, и компонент перекрасится сам.

1 голос
/ 02 января 2011

Вам необходимо переопределить метод рисования на панели и заставить его реализовать 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();
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...