Jpanel 上画图的问题

enuoCM 2005-08-31 04:53:49
我想在一JPanel上画出一实时显示当前时间的字符串,用一线程画字符串,
代码如下:
class SimplePanel1 extends JPanel
{
SimpleDateFormat formatter;
java.util.Date currentDate;
String lastdate;
SimplePanel1()
{
super();
formatter=new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy",Locale.getDefault());
}

class DrawRunner implements Runnable
{
Graphics g;
DrawRunner(Graphics g)
{
this.g=g;
}
public void run()
{
while(true)
{
currentDate =new java.util.Date();
lastdate=formatter.format(currentDate);
g.drawString(lastdate,5,20);
currentDate=null;
try
{
Thread.sleep(300);
}
catch(InterruptedException e){}
}
}
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);
DrawRunner drawrunner=new DrawRunner(g);
Thread DrawThread=new Thread(drawrunner);
DrawThread.start();
}
}

为什么Jpanel上的字符不会自动刷新,而且有时切换界面后字符串会消失呢?
请各位帮忙看看,是否还有其他方法实现?谢谢
...全文
166 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtlang78 2005-08-31
  • 打赏
  • 举报
回复
import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import javax.swing.JPanel;

class SimplePanel1 extends JPanel {
SimpleDateFormat formatter;

SimplePanel1() {
super();
formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());

DrawRunner drawrunner = new DrawRunner();
Thread DrawThread = new Thread(drawrunner);
DrawThread.start();
}

class DrawRunner implements Runnable {
public void run() {
while (true) {
try {
Thread.sleep(300);
repaint();
} catch (InterruptedException e) {
}
}
}
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Date currentDate = new java.util.Date();
String dateString = formatter.format(currentDate);
g.drawString(dateString, 5, 20);
}
}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧