⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bounceexpress.java

📁 此示例效果用Java多线程来实现,通过设置线程的优先级,来控制小球的运行速度. 程序运行后,单击"Start"按钮,弹出一个黑色小球 单击"Express"按钮,弹出一个红色小球.如果你的内存足够
💻 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 + -