在问关于Thread.sleep的问题!

yiweiposer 2004-03-30 09:04:17
关于我上次问的如何实现:
” 先给name[0],name[1],name[2], 一个初值,并依次改变他们,并且每改变其中一个就在JPanel上显示一次“
经过测试发现changed()放在show()之前的话,可以实现我要的功能。
在此感谢 dengsf(十字路口的菜鸟) , softgq(英雄小强)等。
代码如下(1)。但现在我有遇到一个新的问题,我想在Myframe 中加一个JButton进行控制
代码如下(2)。结果遇到的情况还是那样:等所有的name[]改变了才显示。(要求每改变一个值显示一次
代码(1)
import javax.swing.*;
public class MyPanel extends JPanel
{
int i;
String []name={"name1","name2","name3"};
MyPanel()
{
}
public void paintComponment(Graphics g)
{
super.paintComponment(g);
g.drawString(name[0],20,20);
g.drawString(name[1],40,40);
g.drawString(name[2].60,60);
}
public void changed()
{
for(i=0;i<3;i++)
{
try{
Thread.sleep(1000);
name[i]="Mr.wang";
repaint();}catch(InterruptedException e){}
}
public void update()
{
repaint();
}
}
// 同目录中另一个类
import javax.swing.*;
public class MyFrame extends JFrame
{
MyFrame()
{
MyPanel p=new MyPanel();
getContentPane().add(p);
setSize(300,300);
show();
p.changed();
}
public static void main(String args[])
{
MyFrame m=new MyFrame();
}
}
代码(2)
import javax.swing.*;
public class MyPanel extends JPanel
{
int i;
String []name={"name1","name2","name3"};
MyPanel()
{
}
public void paintComponment(Graphics g)
{
super.paintComponment(g);
g.drawString(name[0],20,20);
g.drawString(name[1],40,40);
g.drawString(name[2].60,60);
}
public void changed()
{
for(i=0;i<3;i++)
{
try{
Thread.sleep(1000);
name[i]="Mr.wang";
repaint();}catch(InterruptedException e){}
}
public void update()
{
repaint();
}
}
// 同目录中另一个类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyFrame extends JFrame
{
MyFrame()
{
MyPanel p=new MyPanel();
JPanel p1=new JPanel();
JButton b=new JButton("控制");
p1.add(b);
b.addActionListener(new ActionListener(){public void actionPerfromed(ActionEvent e){
p.changed();}});
getContentPane().setLayout(new GridLayout(2,1));
getContentPane().add(p);
getContentPane().add(p1);
setSize(300,300);
show();
//p.changed();
}
public static void main(String args[])
{
MyFrame m=new MyFrame();
}
}
高手给个解释和正确实现的代码
跪谢!
...全文
93 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongdong715 2004-04-05
  • 打赏
  • 举报
回复
学习
aaronyes 2004-04-03
  • 打赏
  • 举报
回复
顶了。
xuegaosp 2004-04-02
  • 打赏
  • 举报
回复
帮顶
zhengoodman 2004-04-02
  • 打赏
  • 举报
回复
mark
lkjx083 2004-04-02
  • 打赏
  • 举报
回复
修改
public void changed(int j)
{
try{
Thread.sleep(1000);
name[j]="Mr.wang";
repaint();}catch(InterruptedException e){}

public void update()
{
repaint();
}
}
修改
先初始化i=0;
b.addActionListener(new ActionListener(){public void actionPerfromed(ActionEvent e){
if(i<3)
{p.changed(i);i++;}
}
});
changed只负责一个name[i],Jbutton来控制。
Raulgodle 2004-04-02
  • 打赏
  • 举报
回复
看不懂我就顶~~~~~~~~
yiweiposer 2004-03-31
  • 打赏
  • 举报
回复
up
zhang21cnboy 2004-03-30
  • 打赏
  • 举报
回复
单线程的程序,就这样,建议采用多线程
yiweiposer 2004-03-30
  • 打赏
  • 举报
回复
高手能够给出一个具体的实现代码么?谢谢

62,614

社区成员

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

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