最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)力彈彈球?qū)崿F(xiàn)代碼

 更新時(shí)間:2016年08月22日 14:46:19   作者:qq_26525215  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)力彈彈球?qū)崿F(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

先看看效果圖:

直接上代碼了。
微調(diào)按鈕加畫布畫幾個(gè)圓,再實(shí)現(xiàn)監(jiān)聽(tīng)。。。

package cn.hncu.threadDemo.thread2;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class BallsJFrame extends JFrame implements ChangeListener{
  private BallsCanvas ball;
  private JSpinner spinner;

  public BallsJFrame(){
    super("彈彈球");
    this.setBounds(300, 200, 400, 300);
    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);//默認(rèn)是CENTER位置

    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) {
    int value = Integer.parseInt(""+spinner.getValue());
    ball.setDelay(value);
  }


  public static void main(String[] args) {
    new BallsJFrame();
  }

}

class BallsCanvas extends Canvas implements ActionListener, FocusListener{
  private Ball balls[];//存放所有的球
  private Timer timer;//javax.swing.Timer

  public BallsCanvas(Color colors[] ,int delay){
    this.balls = new Ball[colors.length];
    for(int i=0,x=40;i<colors.length;i++,x+=20){
      this.balls[i] = new Ball(x,x,colors[i]);

    }

    //讓當(dāng)前畫布監(jiān)聽(tīng) 焦點(diǎn)事件
    this.addFocusListener(this);


    timer = new Timer(delay,this);
    timer.start();

  }

  public void setDelay(int delay){
    timer.setDelay(delay);
  }


  @Override
  public void paint(Graphics g) {
    for(int i=0;i<this.balls.length;i++){
      g.setColor(balls[i].color);


      //讓每個(gè)球的坐標(biāo)變化一下---(x坐標(biāo))
      balls[i].x = balls[i].left ? balls[i].x-10:balls[i].x+10;
      //當(dāng)球碰壁時(shí),更改球的方向
      if(balls[i].x<=0||balls[i].x>=this.getWidth()-24){
        balls[i].left = !balls[i].left;//切換方向
      }

      //讓每個(gè)球的坐標(biāo)變化一下---(y坐標(biāo))
      balls[i].y = balls[i].up ? balls[i].y-10:balls[i].y+10;
      //當(dāng)球碰壁時(shí),更改球的方向
      if(balls[i].y<=0||balls[i].y>=this.getHeight()-22){
        balls[i].up = !balls[i].up;//切換方向
      }



      g.fillOval(balls[i].x, balls[i].y, 20, 20);
    }
  }


  @Override
  public void actionPerformed(ActionEvent e) {
    //System.out.println("aaa");
    repaint();//刷新畫布.調(diào)用paint(Graphics g)
  }



  @Override
  public void focusGained(FocusEvent e) {
    timer.stop();
  }

  @Override
  public void focusLost(FocusEvent e) {
    timer.restart();

  }




  private static class Ball{
    int x,y;
    boolean up,left;
    Color color;
    public Ball(int x, int y, Color color) {
      this.x = x;
      this.y = y;
      this.color = color;
      up = left = false;
    }

  }




}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Hbase、elasticsearch整合中jar包沖突的問(wèn)題解決

    Hbase、elasticsearch整合中jar包沖突的問(wèn)題解決

    本篇文章主要介紹了Hbase、elasticsearch整合中jar包沖突的問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java IO流 文件傳輸基礎(chǔ)

    Java IO流 文件傳輸基礎(chǔ)

    這篇文章主要介紹了Java IO流 文件傳輸基礎(chǔ)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 淺談spring boot使用thymeleaf版本的問(wèn)題

    淺談spring boot使用thymeleaf版本的問(wèn)題

    這篇文章主要介紹了spring boot使用thymeleaf版本的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot集成ShardingSphere實(shí)現(xiàn)數(shù)據(jù)庫(kù)分表

    SpringBoot集成ShardingSphere實(shí)現(xiàn)數(shù)據(jù)庫(kù)分表

    ShardingSphere?是一個(gè)開(kāi)源的分布式數(shù)據(jù)庫(kù)中間件,旨在為應(yīng)用提供數(shù)據(jù)庫(kù)分片、讀寫分離、分布式事務(wù)等功能,下面我們來(lái)看看SpringBoot如何集成ShardingSphere實(shí)現(xiàn)數(shù)據(jù)庫(kù)分表吧
    2024-12-12
  • java實(shí)現(xiàn)貪吃蛇游戲代碼(附完整源碼)

    java實(shí)現(xiàn)貪吃蛇游戲代碼(附完整源碼)

    這篇文章主要介紹了java實(shí)現(xiàn)貪吃蛇游戲代碼(附完整源碼),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • SpringBoot中事務(wù)失效的原因詳解

    SpringBoot中事務(wù)失效的原因詳解

    這篇文章主要介紹了SpringBoot中事務(wù)失效的原因詳解,spring中的事務(wù)是依賴AOP的,AOP是通過(guò)動(dòng)態(tài)代理實(shí)現(xiàn)的,只有通過(guò)代理類訪問(wèn)的方法才能被攔截,需要的朋友可以參考下
    2023-10-10
  • Gson之toJson和fromJson方法的具體使用

    Gson之toJson和fromJson方法的具體使用

    Gson是Google的一個(gè)開(kāi)源項(xiàng)目,可以將Java對(duì)象轉(zhuǎn)換成JSON,也可能將JSON轉(zhuǎn)換成Java對(duì)象。本文就詳細(xì)的介紹了toJson和fromJson方法的具體使用,感興趣的可以了解一下
    2021-11-11
  • List集合按某個(gè)屬性或者字段進(jìn)行分組的操作

    List集合按某個(gè)屬性或者字段進(jìn)行分組的操作

    這篇文章主要介紹了List集合按某個(gè)屬性或者字段進(jìn)行分組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • IDEA如何修改配置文件的存放位置

    IDEA如何修改配置文件的存放位置

    這篇文章主要介紹了IDEA如何修改配置文件的存放位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論

成都市| 临安市| 仲巴县| 宕昌县| 海门市| 怀集县| 吴忠市| 平安县| 太仓市| 黄浦区| 灵寿县| 肇源县| 泰兴市| 大石桥市| 阳江市| 个旧市| 陵川县| 翼城县| 洪雅县| 南陵县| 高邮市| 克拉玛依市| 屏南县| 靖边县| 大埔县| 鄂温| 兴海县| 上杭县| 绵阳市| 海兴县| 赤水市| 阿勒泰市| 那坡县| 岱山县| 陆川县| 化德县| 阜宁县| 兖州市| 酒泉市| 景德镇市| 林口县|