一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java實力彈彈球實現代碼

Java實力彈彈球實現代碼

2020-06-06 14:16qq_26525215 JAVA教程

這篇文章主要為大家詳細介紹了Java實力彈彈球實現代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

先看看效果圖:

Java實力彈彈球實現代碼

直接上代碼了。
微調按鈕加畫布畫幾個圓,再實現監聽。。。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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);//默認是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]);
 
    }
 
    //讓當前畫布監聽 焦點事件
    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);
 
 
      //讓每個球的坐標變化一下---(x坐標)
      balls[i].x = balls[i].left ? balls[i].x-10:balls[i].x+10;
      //當球碰壁時,更改球的方向
      if(balls[i].x<=0||balls[i].x>=this.getWidth()-24){
        balls[i].left = !balls[i].left;//切換方向
      }
 
      //讓每個球的坐標變化一下---(y坐標)
      balls[i].y = balls[i].up ? balls[i].y-10:balls[i].y+10;
      //當球碰壁時,更改球的方向
      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();//刷新畫布.調用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;
    }
 
  }
 
 
 
 
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/qq_26525215/article/details/50382946

延伸 · 閱讀

精彩推薦
  • JAVA教程Java實現表達式二叉樹

    Java實現表達式二叉樹

    這篇文章主要為大家詳細介紹了如何利用Java實現表達式二叉樹,感興趣的小伙伴們可以參考一下 ...

    my筆觸1142020-06-03
  • JAVA教程Java中的MessageFormat.format用法實例

    Java中的MessageFormat.format用法實例

    這篇文章主要介紹了Java中的MessageFormat.format用法實例,本文先是講解了MessageFormat的語法,然后給出了多個操作實例,需要的朋友可以參考下 ...

    junjie3412019-12-20
  • JAVA教程Java通過MyBatis框架對MySQL數據進行增刪查改的基本方法

    Java通過MyBatis框架對MySQL數據進行增刪查改的基本方法

    MyBatis框架由Java的JDBC API進一步封裝而來,在操作數據庫方面效果拔群,接下來我們就一起來看看Java通過MyBatis框架對MySQL數據進行增刪查改的基本方法: ...

    czj44511702020-05-08
  • JAVA教程支持生產阻塞的Java線程池

    支持生產阻塞的Java線程池

    在各種并發編程模型中,生產者-消費者模式大概是最常用的了。在實際工作中,對于生產消費的速度,通常需要做一下權衡 ...

    java教程網3832019-11-19
  • JAVA教程探討Java驗證碼制作(下篇)

    探討Java驗證碼制作(下篇)

    這篇文章主要介紹了探討Java驗證碼制作(下篇)的相關資料,需要的朋友可以參考下 ...

    Try.Catch5002020-04-29
  • JAVA教程java代碼實現截圖功能(屏幕截圖)

    java代碼實現截圖功能(屏幕截圖)

    java代碼實現截圖功能,該JavaBean可以直接在其他Java應用程序中調用,默認的文件前綴為GuiCamera,文件格式為PNG格式,直接使用下面的類吧 ...

    java代碼網3562019-10-25
  • JAVA教程JDBC使用小結

    JDBC使用小結

    JDBC是一個Java應用程序接口,作用是封裝了對數據庫的各種操作。JDBC由類和接口組成,使用Java開發數據庫應用都需要4個主要的接口:Driver、Connection、Sta...

    暮紫白2112020-04-25
  • JAVA教程Java中的Object類詳細介紹

    Java中的Object類詳細介紹

    這篇文章主要介紹了Java中的Object類詳細介紹,本文講解了Object類的作用、Object類的主要方法、Object類中不能被重寫的方法、Object類的equals方法重寫實例等內...

    junjie3112019-12-23
主站蜘蛛池模板: 无码人妻丰满熟妇啪啪网不卡 | 免费观看一级一片 | 国产91精品在线播放 | 无限好资源免费观看 | 2021福利视频 | 91理论片午午伦夜理片久久 | 黄片毛片 | 国产精品suv一区二区 | 午夜精品一区 | 国产精品猎奇系列在线观看 | 欧美日韩一区二区三区在线观看 | 波多野结衣两女调教 | 福利色播 | 性欧美sexovideotv | 四神集团1涨奶是第几章 | 极品ts赵恩静和直男激战啪啪 | 日产乱码卡1卡2卡三卡四在线 | 欧美极品摘花过程 | 国产精品嫩草影院一二三区 | 国产精品国产三级在线专区 | 国产精品午夜性视频网站 | 搡60一70岁的老女人小说 | 国产成人精品视频午夜 | 日本妇人成熟免费不卡片 | 成年人黄视频在线观看 | 久久国产乱子伦精品免费不卡 | 成人福利在线视频免费观看 | 亚洲mv国产精品mv日本mv | 哇嘎在线精品视频在线观看 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲AV蜜桃永久无码精品无码网 | 国产一级黄色网 | 日本一区二区三区四区无限 | 免费亚洲一区 | 久久精视频 | 大桥未久midd—962在线 | 国产精品亚洲va在线观看 | 国产精品福利 | 日本最大的黄色网站 | 天天色天| 97蝌蚪自拍自窝 |