亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

初學多線程練習3--移動的文本

2019-11-14 14:56:44
字體:
來源:轉載
供稿:網友

Flash中的逐幀動畫可以實現文本移動顯示的效果,java程序也可以實現類似效果哦。

1.Ticker類繼承Canvas,實現Runnable接口。用Canvas中的paint方法控制字符串的移動位置。

2.TickerFrame 類繼承Frame,實現ActionListener窗口,添加兩個按鈕來控制文本的移動和停止。

核心部分:

字符串快要離開顯示區域是,需要復位減少的x坐標值。由于那時的x坐標值和文本寬度相等,這就意味著需要確定字符串的寬度。而字符串寬度依賴于選定的字體、字號和外觀。這里使用了FontMetrics類,用它能獲得關于特定字體信息、度量一個字符串在特定字體情況下的尺寸。但此類是抽象類,不能被實例化,所以還應該使用一個getFontMetrics方法來獲得FontMetrics對象的引用。

代碼如下:

  1 import java.awt.*;  2 import java.awt.event.*;  3 class Ticker extends Canvas implements Runnable  4 {  5     //定義字符串位置坐標  6     PRivate int x,y;  7     //定義整型變量用來存儲字符串的高度,寬度  8     private int height,width;  9     private Thread runner=null; 10     //定義字符串 11     private String text=null; 12     //FontMetrics類可以測出具有特定字體的字符大小,但是是抽象類,不能直接被實例化, 13      14     private FontMetrics metrics =null; 15     private Font font=new Font("Monospaced",Font.BOLD,50); 16  17     public Ticker(String _text) 18     { 19         text=_text; 20         //使用getFontMetrics方法,返回一個FontMetrics對象的引用 21         metrics=getFontMetrics(font); 22         //高度等于這種字體的高度 23         height=metrics.getHeight(); 24         //寬度等于字符串的寬 25         width=metrics.stringWidth(text); 26  27         x=getSize().width; 28         y=height; 29          30         //Ticker的尺寸至少應該和文本一般大 31         setSize(width,height+2); 32  33     } 34     //自定義線程啟動的方法 35     public void start() 36     { 37         if(runner==null) 38         { 39             runner=new Thread(this); 40             runner.start(); 41         } 42     } 43     //自定義停止線程的方法 44     public void stop() 45     {runner=null;} 46  47     //實現run方法 48     public void run() 49     { 50         Thread currentThread =Thread.currentThread(); 51         while(runner==currentThread) 52         { 53             //自定義方法,使字符串向左移動坐標改變 54             computeCoordinates(); 55             //重繪 56             repaint(); 57             try 58             { 59                 runner.sleep(30); 60             } 61             catch (InterruptedException ie) 62             { 63                 System.err.println("Error:"+ie); 64             } 65         } 66     } 67     //重寫父類的paint()方法 68     public void paint(Graphics g) 69     { 70         g.setColor(Color.blue); 71         g.setFont(font); 72         g.drawString(text,x,y); 73     } 74  75     private void computeCoordinates() 76     { 77         //當所有文本移到窗口外時,復位 78         if(x<-width) 79             x=getSize().width; 80         else 81             //坐標減小,已達到字符串向左移動的效果 82             x-=2; 83  84     } 85  86 } 87 public class TickerFrame extends Frame implements ActionListener 88 {
//定義兩個按鈕
89 private Button start=new Button("Start"); 90 private Button stop=new Button("Stop");
//創建Ticker類對象
91 Ticker ticker=new Ticker("實踐中學習!");
//在構造方法中初始化窗口
92 public TickerFrame() 93 { 94 super("移動的文本"); 95 setLayout(new BorderLayout()); 96 add("Center",ticker);
//新建一個容器
97 Panel p=new Panel();
//設置為流式布局
98 p.setLayout(new FlowLayout());
//把按鈕添加到容器中,并為按鈕注冊監聽器
99 p.add(start); start.addActionListener(this);100 p.add(stop); stop.addActionListener(this);101 add("South",p);
//用匿名內部類,為窗口注冊監聽器。
102 addWindowListener(new WindowAdapter()103 {104 public void windowClosing(WindowEvent we)105 {106 System.exit(0);107 }108 });109 pack();
//使窗口可見
110 setVisible(true);111 }
//實現接口的抽象方法,處理單擊按鈕的事件
112 public void actionPerformed(ActionEvent ae)113 {114 if(ae.getSource()==start)115 ticker.start();116 else117 if(ae.getSource()==stop)118 ticker.stop();119 120 }121 public static void main(String[] args)122 {new TickerFrame();}123 }

運行:

單擊“Start”按鈕,文本就會向左移動,單擊“Stop”按鈕,則移動停止;當所有文本移到窗口之外時,文本復位,再次向左移動。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲va在线va天堂资源站| 午夜精品久久久久久久男人的天堂| 国产性色av一区二区| 国产日韩精品在线观看| 欧美二区乱c黑人| 亚洲电影免费观看高清完整版在线| 精品国内自产拍在线观看| 亚洲欧美国产另类| 久久精品久久精品亚洲人| 97视频在线免费观看| 成人免费观看49www在线观看| 欧美成年人视频网站| 亚洲欧美国产一区二区三区| 欧美裸体xxxx极品少妇| 午夜精品一区二区三区av| 色妞色视频一区二区三区四区| 亚洲精品456在线播放狼人| 午夜精品久久久久久99热软件| 欧日韩不卡在线视频| 久久91亚洲精品中文字幕奶水| 91高清视频免费观看| 成人网在线免费看| 色偷偷av一区二区三区乱| 欧美与黑人午夜性猛交久久久| 日韩精品在线影院| 国产在线98福利播放视频| 91久久久精品| 超碰97人人做人人爱少妇| 国产精品在线看| 国产日韩中文在线| 欧美精品videos另类日本| 亚洲偷欧美偷国内偷| 欧美在线观看一区二区三区| 久久99国产综合精品女同| 成人免费观看49www在线观看| www.日韩系列| 欧美精品免费看| 亚洲大尺度美女在线| 在线观看久久久久久| 韩国精品久久久999| 国产成人精品久久亚洲高清不卡| 草民午夜欧美限制a级福利片| 久久韩国免费视频| 亚洲bt欧美bt日本bt| 亚洲天堂第一页| 日韩中文字幕在线免费观看| 欧洲永久精品大片ww免费漫画| 欧美性猛交xxxx黑人猛交| 亚洲男人的天堂网站| 欧美精品18videos性欧美| 亚洲午夜精品久久久久久久久久久久| 亚洲男人的天堂网站| 亚洲精品久久久久久久久久久| 国产日韩精品电影| 国产亚洲欧美日韩美女| 欧美成人激情视频免费观看| 疯狂做受xxxx高潮欧美日本| 久久精品99无色码中文字幕| 欧美三级xxx| 91在线国产电影| 亚洲欧美日韩国产成人| 亚洲免费精彩视频| 国产999精品久久久| 亚洲а∨天堂久久精品9966| 最近中文字幕mv在线一区二区三区四区| 国产高清视频一区三区| 中文字幕精品一区二区精品| 中文日韩电影网站| 狠狠色香婷婷久久亚洲精品| 97色在线播放视频| 97精品国产91久久久久久| 日韩美女av在线| 国产精品ⅴa在线观看h| 成人网在线观看| 国产精品自拍网| 欧美成人精品在线播放| 亚洲国产精品电影| 日本国产欧美一区二区三区| 欧美韩国理论所午夜片917电影| 亚洲一区二区自拍| 亚洲欧美日韩精品久久| 国产精品日日摸夜夜添夜夜av| 国产激情综合五月久久| 青青久久av北条麻妃海外网| 欧美色图在线视频| 亚洲乱亚洲乱妇无码| 亚洲人线精品午夜| 欲色天天网综合久久| 久久久久久久香蕉网| 欧美成人激情视频免费观看| 日韩欧美成人免费视频| 国产成人亚洲精品| 成人美女av在线直播| 国产成人在线一区二区| 欧美性色19p| 亚洲天堂av图片| 亚洲天堂第二页| 欧美老女人bb| 欧美日韩亚洲视频| 欧美刺激性大交免费视频| 亚洲国产精品久久久久| 久久久人成影片一区二区三区| 一区二区欧美久久| 在线免费看av不卡| 激情久久av一区av二区av三区| 一本色道久久综合亚洲精品小说| 亚洲欧美日韩高清| 韩国一区二区电影| 日本一欧美一欧美一亚洲视频| 久久国产视频网站| 精品久久久久久| 久久综合久久美利坚合众国| 日本久久久久亚洲中字幕| www亚洲欧美| 中文字幕国产日韩| 2019国产精品自在线拍国产不卡| 一区二区在线视频播放| 亚洲精品久久久久中文字幕二区| 性色av一区二区三区在线观看| 午夜精品福利在线观看| 日韩免费高清在线观看| 欧美高清视频在线| 91夜夜揉人人捏人人添红杏| 中文字幕日韩精品有码视频| 成人在线视频网站| 精品香蕉在线观看视频一| 中文字幕欧美日韩精品| 亚洲国产又黄又爽女人高潮的| 国外视频精品毛片| 国内精品在线一区| 国产91ⅴ在线精品免费观看| 日本一欧美一欧美一亚洲视频| 亚洲最大福利网| 26uuu另类亚洲欧美日本老年| 欧美精品一区三区| 欧美老女人xx| 久久国产精品影片| 亚洲精品成人网| 91色视频在线观看| 国产精品视频区| 91欧美视频网站| 亚洲伊人久久综合| 亚洲午夜女主播在线直播| 国产精品∨欧美精品v日韩精品| 亚洲欧美制服第一页| 亚洲免费av片| 久久九九热免费视频| 精品亚洲一区二区三区四区五区| 日韩av黄色在线观看| 国产视频在线一区二区| 亚洲欧美国产制服动漫| 亚洲第一视频网| 亚洲精品综合久久中文字幕| 日韩经典一区二区三区| 亚洲第一免费网站| 国产一区玩具在线观看| 亚洲xxxx妇黄裸体| 国产一区二区黑人欧美xxxx| 成人久久久久久久| 久久精品99无色码中文字幕| 中文字幕亚洲精品| 久久久久久尹人网香蕉| 欧美老肥婆性猛交视频| 国产a级全部精品|