//运行程序的类
public class GUI {
public static void main(String[] args) {
new Initialize();
}
}
//gui窗体类
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Initialize implements Awt_Define{
public Initialize() {
jframe.setTitle("控件自动移动测试程序");
jframe.setBounds(0, 0, 600, 600);
jframe.setVisible(true);
jframe.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
jframe.add(peason);
thread_p.start();
jframe.add(beans);
thread_b.start();
}
}
//吃豆人的人
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Peason extends Canvas implements Runnable, Awt_Define{
int x=0,y=0;
int a=0,b=0;
Graphics g ;
@Override
public void run() {
g = getGraphics();
while(true) {
try {
Thread.sleep(1000);//通过控制休眠速度以临时解决闪烁问题
} catch (InterruptedException e) {
e.printStackTrace();
}
this.update(g);
peason.requestFocus();
peason.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN ||
e.getKeyCode() == KeyEvent.VK_UP ) {
a = 0;
if ((e.getKeyCode() == KeyEvent.VK_DOWN) )
b = 10;
else if((e.getKeyCode() == KeyEvent.VK_UP))
b = -10;
}
if (e.getKeyCode() == KeyEvent.VK_LEFT ||
e.getKeyCode() == KeyEvent.VK_RIGHT) {
b = 0;
if (e.getKeyCode() == KeyEvent.VK_LEFT)
a = -10;
else
a = 10;
}
// peason.paint(g);
}
});
g.setColor(Color.GREEN);
g.fillRect(x+=a,y+=b, 20, 20);
System.out.println("X = " + x +"y = " + y);
}
}
}
//豆子
import java.awt.*;
public class Beans extends Canvas implements Awt_Define,Runnable{
@Override
public void run() {
int x,y;
while (true){
x = random.nextInt(550);
y = random.nextInt(550);
Graphics g = getGraphics();
g.setColor(Color.CYAN);
g.fillOval(x, y, 10, 10);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
beans.update(g);
}
}
}
//继承接口
import javax.swing.*;
import java.awt.*;
import java.util.Random;
interface Awt_Define{
JFrame jframe = new JFrame();
Panel panel = new Panel();
Peason peason = new Peason();
Beans beans = new Beans();
Random random = new Random();
Thread thread_p = new Thread(peason);
Thread thread_b = new Thread(beans);
}
问题:单独运行两个类(豆子和人)正常运行,但是现在无法实现两个类同时运行,使用多线程,只会画出一个类(豆子或人),请问应该如何解决