📄 bouncepress.java
字号:
package sample;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class BouncePress{
public static void main(String[] args){
JFrame frame = new BounceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class BounceFrame extends JFrame{
public BounceFrame(){
setSize(600,500);
setTitle("Bounce Ball");
Container contentPane = getContentPane();
canvas = new BallCanvas();
contentPane.add(canvas,BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
addButton(buttonPanel,"Start",
new ActionListener(){
public void actionPerformed(ActionEvent evt){
addBall(Thread.NORM_PRIORITY - 4,Color.black);
}
});
addButton(buttonPanel,"Express",
new ActionListener(){
public void actionPerformed(ActionEvent evt){
addBall(Thread.NORM_PRIORITY + 2 ,Color.red);
}
});
addButton(buttonPanel,"Close",
new ActionListener(){
public void actionPerformed(ActionEvent evt){
System.exit(0);
}
});
contentPane.add(buttonPanel,BorderLayout.SOUTH);
}
public void addButton(Container c,String title,ActionListener listener){
JButton button = new JButton(title);
c.add(button);
button.addActionListener(listener);
}
public void addBall(int priority,Color color){
Ball b = new Ball(canvas,color);
canvas.add(b);
BallThread thread = new BallThread(b);
thread.setPriority(priority);
thread.start();
}
/*public void addBall(){
try{
Ball b = new Ball(canvas);
canvas.add(b);
for(int i = 1; i <= 1000; i++){
b.move();
Thread.sleep(5);
}
}
catch (InterruptedException e) {}
}*/
private BallCanvas canvas;
}
class BallThread extends Thread{
public BallThread(Ball aBall) { b = aBall; }
public void run(){
try{
for(int i = 1; i <= 1000; i++){
b.move();
sleep(5);
}
}
catch (InterruptedException e) {}
}
private Ball b;
}
class BallCanvas extends JPanel{
public void add(Ball b){
balls.add(b);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for(int i = 0;i < balls.size(); i++){
Ball b = (Ball)balls.get(i);
b.draw(g2);
}
}
private ArrayList balls = new ArrayList();
}
class Ball{
public Ball(Component c,Color aColor) { canvas = c; color = aColor; }
public void draw(Graphics2D g2){
g2.setColor(color);
g2.fill(new Ellipse2D.Double(x,y,15,15));
}
public void move(){
x += dx;
y += dy;
if (x < 0){
x = 0;
dx = -dx;
}
if (x + 15 >= canvas.getWidth()){
x = canvas.getWidth() - 15;
dx = -dx;
}
if (y < 0){
y = 0;
dy = -dy;
}
if (y + 15 >= canvas.getHeight()){
y = canvas.getHeight() - 15;
dy = -dy;
}
canvas.paint(canvas.getGraphics());
}
private Component canvas;
private Color color;
private int x = 0;
private int y = 0;
private int dx = 2;
private int dy = 2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -