国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初學多線程練習2--下雪效果

2019-11-14 15:00:08
字體:
來源:轉載
供稿:網友

此練習沒有直接采用繼承Thread類或者繼承Runnable的接口來實現多線程,而是使用了匿名內部類。

要導入的類:

1 import javax.swing.*;2 import java.awt.*;

1.定義SowPanel類,繼承JPanel類,這個類有兩個整型數組成員,用來保存雪花起始位置。在構造函數中為數組賦初值;重寫父類的paint()方法;定義一個啟動多線程的startSnow()方法。

 1 class SnowPanel extends JPanel 2 { 3     //定義整型數組,存儲雪花坐標 4     PRivate int[] x=new int[300]; 5     private int[] y=new int[300]; 6  7     public SnowPanel() 8     { 9         //設置背景為黑色10         setBackground(Color.black);11         //用隨機數初始化雪花坐標12         for(int i=0;i<x.length;i++)13         {14             x[i]=(int)(Math.random()*800);15             y[i]=(int)(Math.random()*600);16         }17     }18     19     public void paint(Graphics g)20     {21         //繼承父類畫的方法22         super.paint(g);23         //設置顏色為白色24         g.setColor(Color.white);25         //利用循環畫出多個雪花26         for(int i=0;i<x.length;i++)27         {28             g.drawString("*",x[i],y[i]);29         }30     }31     //定義一個方法啟動多線程,并使用匿名內部類32     public void startSnow()33     {34         new Thread()35         {36             public void run()37             {38                 while(true)39                 {40                     for(int i=0;i<y.length;i++)41                     {42                         //坐標下移43                         y[i]++;44                         //檢查是否越界45                         if(y[i]==600)46                         y[i]=0;47                         //重繪48                         repaint();49                     }50                     51                      try52                      {53                         Thread.sleep(10);54                      }55                          catch (InterruptedException e)56                      {57                         e.printStackTrace();58                      }59                 }60             }61         }.start();62     }63 }

2.定義ShowFrame類,繼承Jframe 類。在構造方法中設置窗口的顯示屬性,并創建ShowPanel對象,添加到窗口中。

 1 public class SnowFrame extends JFrame 2 { 3     public SnowFrame() 4     { 5         setTitle("滿天雪花"); 6         //設置窗體顯示坐標和大小 7         setBounds(100,100,800,600); 8         //設置用戶在此窗體上發起close時默認的操作 9         this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);10         //設置此窗體不可被調整大小11         setResizable(false);12         SnowPanel p=new SnowPanel();13         //調用能夠啟動線程的方法14         p.startSnow();15         //把SnowPanel對象添加到此窗體上16         this.add(p);17         this.setVisible(true);18     }19     public static void main(String[] args)20     {new SnowFrame();}21 }

 

3.運行效果圖片(此為靜態圖):

疑問:發現其他的不改變,繼承Frame、Panel和繼承JFrame、Jpanel的運行效果是不同的,前者顯示的下雪場景總是有閃爍的感覺;后者則沒有閃爍,個人感覺后者效果更好些。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎左旗| 崇信县| 淮北市| 滦平县| 绥中县| 乌兰察布市| 香格里拉县| 四川省| 宜川县| 廊坊市| 宁晋县| 平罗县| 盐边县| 巩义市| 伊金霍洛旗| 抚宁县| 罗田县| 无锡市| 碌曲县| 西峡县| 米泉市| 时尚| 通州市| 玛曲县| 阿坝县| 嘉峪关市| 台南县| 青海省| 年辖:市辖区| 新泰市| 安塞县| 泸溪县| 平江县| 台州市| 吉隆县| 景宁| 甘德县| 大石桥市| 桐乡市| 上林县| 固始县|