zoukankan      html  css  js  c++  java
  • java学习日记-----------------------------弹弹球

    好玩的小程序,弹弹弹....................

    import java.awt.*;
    
    import javax.swing.*;
    
    import java.awt.event.*;
    
    import javax.swing.event.*;
    public class BallsCanvas extends Canvas implements ActionListener,FocusListener{
        private Ball balls[];
        private Timer timer;//定时器
        
        private static class Ball{
            int x,y;
            Color color;
            boolean up,left;
            Ball(int x,int y,Color color){
                this.x=x;
                this.y=y;
                this.color=color;
            }
        }
        public BallsCanvas(Color color[],int delay){//指定颜色,延时
            this.balls=new Ball[color.length];
            for(int i=0,x=40;i<color.length;i++,x+=40)
                balls[i]=new Ball(x,x,color[i]);
                this.addFocusListener(this);
                timer=new Timer(delay,this);
                timer.start();//定时器启动
        }
            public void setDelay(int delay1){
                timer.setDelay(delay1);
            }
            public void paint(Graphics g){
                for(int i=0;i<balls.length;i++){
                    g.setColor(balls[i].color);
                    balls[i].x=balls[i].left?balls[i].x-10:balls[i].x+10;
                    if(balls[i].x<=0||balls[i].x>=this.getWidth())//到水平变给变方向
                    balls[i].left=!balls[i].left;
                    balls[i].y=balls[i].up?balls[i].y-10:balls[i].y+10;
                    if(balls[i].y<=0||balls[i].y>=this.getHeight())//到垂直边更改方向
                    balls[i].up=!balls[i].up;
                    g.fillOval(balls[i].x, balls[i].y, 20, 20);
                }
            }
    
        @Override
        public void focusGained(FocusEvent e) {
            // TODO Auto-generated method stub
            timer.stop();
        }
    
        @Override
        public void focusLost(FocusEvent e) {
            // TODO Auto-generated method stub
            timer.restart();
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            repaint();
        }
    
    }
    class BallsJFrame extends JFrame implements ChangeListener{
         public BallsCanvas ball;
         private JSpinner spinner;
         public BallsJFrame(){
             super("弹弹球");
             this.setBounds(300,200, 480, 360);
             this.setDefaultCloseOperation(EXIT_ON_CLOSE);
             Color colors[]={Color.red,Color.green,Color.blue,Color.magenta,Color.cyan};
             ball=new BallsCanvas(colors,100);
             this.getContentPane().add(ball);
             
             JPanel panel=new JPanel();
             this.getContentPane().add(panel,"South");
             panel.add(new JLabel("Delay"));
             spinner =new JSpinner();
             spinner.setValue(100);
             panel.add(spinner);
             spinner.addChangeListener(this);
             this.setVisible(true);
         }
        @Override
        public void stateChanged(ChangeEvent e) {
            // TODO Auto-generated method stub
            ball.setDelay(Integer.parseInt(""+spinner.getValue()));
        }
        public static void main(String[] args) {
            new BallsJFrame();
        }
    }
  • 相关阅读:
    3星|《中国古城墙》:重要的古城墙的资料汇集
    bindingSource具体使用案例
    WPF第三方控件盘点
    FluentValidation具体使用案例
    Visual Studio 版本管理从TFS迁移到SVN
    Image.FromStream与Image.FromFile使用区别
    判断图片的格式的方法
    WCF测试小程序
    使用AutoMapper 处理DTO数据对象的转换
    获取mac地址和IP地址方式
  • 原文地址:https://www.cnblogs.com/he-shao/p/4902735.html
Copyright © 2011-2022 走看看