📄 bounceexpress.java
字号:
//BounceExpress.javaimport java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.*;import javax.swing.*;public class BounceExpress{ public static void main(String[] args) { JFrame frame =new BounceFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}class BounceFrame extends JFrame{ public static final int WIDTH=450; public static final int HEIGHT=350; private BallCanvas canvas; public BounceFrame() { setSize(WIDTH, HEIGHT); setTitle("BounceExpress"); 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, 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(); }}class BallCanvas extends JPanel{ private ArrayList balls=new ArrayList(); 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); } }}class BallThread extends Thread{ private Ball b; public BallThread(Ball aBall) { b=aBall; } public void run() { try{ for(int i=1; i<=1000; i++) { b.move(); sleep(3); } } catch(InterruptedException exception){} }}class Ball{ private static final int XSIZE=15; private static final int YSIZE=15; private Component canvas; private Color color; private int x=0; private int y=0; private int dx=2; private int dy=2; 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, XSIZE, YSIZE)); } public void move() { x+=dx; y+=dy; if(x<0) { x=0; dx=-dx; } if(x+XSIZE>=canvas.getWidth()) { x=canvas.getWidth()-XSIZE; dx=-dx; } if(y<0) { y=0; dy=-dy; } if(y+YSIZE>=canvas.getHeight()) { y=canvas.getHeight()-YSIZE; dy=-dy; } canvas.repaint(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -