java 多线程+图形界面

为什么它们会闪烁同样的颜色,时间不应该是不一样没?怎样让他们闪不同的颜色,要同时闪.谢了!importjava.awt.*;importjava.awt.event.Ac... 为什么它们会闪烁同样的颜色,时间不应该是不一样没?
怎样让他们闪不同的颜色,要同时闪.谢了!
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
class PaintovalPane extends JPanel implements Runnable{
int x;
int y;
int r;
public PaintovalPane(int x,int y,int r ){
this.x = x ;
this.y = y ;
this.r = r ;
}
public void paintComponent(Graphics g) {
Random rd = new Random(System.currentTimeMillis());
super.paintComponent(g);
g.setColor(Color.getHSBColor(rd.nextInt(255),
rd.nextInt(255), rd.nextInt(255)));
g.fillOval(x, y, r, r);
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
repaint();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class InputPane extends JPanel{

JTextField jtf1 = new JTextField("",5);
JTextField jtf2 = new JTextField("",5);

JLabel jl1 = new JLabel("行数");
JLabel jl2 = new JLabel("列数");

public InputPane(){

jl1.setBounds(0, 0, 50, 20);
jl2.setBounds(0, 25, 50, 20);

jtf1.addActionListener(new My_ActionListener1());
jtf2.addActionListener(new My_ActionListener1());

jtf1.setBounds(50, 0, 50, 20);
jtf2.setBounds(50, 25, 50, 20);

setLayout(null);

add(jl1);
add(jl2);
add(jtf1);
add(jtf2);

}

}

class My_ActionListener1 implements ActionListener{
String info;
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
info = (String)e.getActionCommand();
System.out.println(info);
}

}

class PaintovalFrame extends JFrame{
public PaintovalFrame() {
setTitle("lamp");
setSize(700,700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(null);

InputPane ip = new InputPane();
ip.setBounds(250, 300, 200, 100);

contentPane.add(ip);

for(int i=0;i<5;i++){

for(int j=0;j<5;j++){

PaintovalPane jp = new PaintovalPane(0,0,50);

jp.setBounds(50*i, 50*j, 50, 50);

contentPane.add(jp);

new Thread(jp).start();

}

}

}
}

public class Paintoval {
public static void main(String[] args)
{
JFrame f = new PaintovalFrame();
f.show();
}
}
展开
 我来答
飛羽灬
推荐于2018-02-12
知道答主
回答量:83
采纳率:0%
帮助的人:24.6万
展开全部
通过公共的变量来控制,多个线程对一个变量经行引用,还有你这样贴代码 没有人想一行一行认真看的
匿名用户
2013-07-06
展开全部
在主类定义一个统一控制的开关试试
追问
初学者,不是很懂,望详解!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dark19861201
2018-02-10 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1798万
展开全部
其实吧你这个代码我看了下,大部分时候显示的本来就不是相同的颜色,只不过有些颜色看起来太过相近,所以以为是同一种颜色了,另外就是目前不本来就是同时闪么?是不是你要一个个闪,写错问题了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式