修改ThreadBall类:
package com.huizhi;
public class ThreadBall extends Thread {
public void run(){
while(true){
Ui.PositionY+=50;
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Ui类:
/**
* 定义界面
* 显示球板
* 球板动画
* 球板对键盘的响应
* 键盘事件响球拍的左右移动
* 球直线下落
*/
package com.huizhi;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Ui extends JFrame {
static int PositionA=50,RecWidth=50,RecHeight=20,Width=900;
static int PaddleWidth=50,PaddleHeight=50,PositionX=200,PositionY=200;
public Ui(){
setTitle("弹球游戏");
setBackground(Color.WHITE);
setSize(900, 600);
setLocation(300, 50);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
//JOptionPane.showMessageDialog(null,e.getKeyChar(),"22",JOptionPane.INFORMATION_MESSAGE);
char aa=e.getKeyChar();
if(aa=='d'){//此处测试时注意字母输入时的大小写
PositionA+=50;
}
else if(aa=='a'){
PositionA-=50;
}
}
});
}
public void paint(Graphics g) {
g.clearRect(0,0,900,600);//0,0:是相对于容器的坐标
g.setColor(Color.red);
g.fillRect(PositionA - 50, 450, RecWidth, RecHeight);
g.setColor(Color.green);
g.fillOval(PositionX,PositionY,PaddleWidth/2,PaddleHeight/2);
}
}