SWING實現滾動字幕

lyz 14年前發布 | 7K 次閱讀 JavaSwing

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>package com.lyz;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.Color;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.Component;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.Font;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.Graphics;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.GraphicsEnvironment;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.awt.event.ComponentListener;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import java.beans.PropertyChangeListener;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import javax.swing.JFrame;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>import javax.swing.JPanel;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>public class Test extends JFrame {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         public Test() {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                   </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   super("Test",GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration());</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   MoveLabel label = new MoveLabel("</FONT></SPAN>帶有滾動效果的標簽<SPAN lang=EN-US><FONT face=Calibri>");</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   this.add(label);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   Test.removeListener(this);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                   </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   this.setIgnoreRepaint(false);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   this.setSize(600, 300);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   this.setVisible(true);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>         </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         public static void main(String args[]) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                   </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   new Test();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>//               System.getProperties().list(System.out);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>         </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         public static void removeListener(Component component){</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   ComponentListener[] componentListener = component.getComponentListeners();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   for(int i = 0; i < componentListener.length;i++){</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            component.removeComponentListener(componentListener[i]);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                   </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   PropertyChangeListener[] changeListener = component.getPropertyChangeListeners();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   for(int i = 0; i < changeListener.length;i++){</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            component.removePropertyChangeListener(changeListener[i]);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         /**</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>          * </FONT></SPAN>帶有滾動效果的<SPAN lang=EN-US><FONT face=Calibri>Label</FONT></SPAN>標簽</P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>          */</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         private class MoveLabel extends JPanel implements Runnable{</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   private String text = null;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   private Thread thread = null;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   private int x = 0;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   private int w = 0, h = 0;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   public MoveLabel(String text) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            super();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            this.text = text;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            this.setBackground(Color.BLACK);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            this.setFont(new Font("</FONT></SPAN>宋體<SPAN lang=EN-US><FONT face=Calibri>", Font.PLAIN, 300));</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            this.setForeground(Color.red);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            this.setIgnoreRepaint(false);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                            </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            Test.removeListener(this);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            thread = new Thread(this);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            thread.start();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                   </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                     public void update(Graphics g) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                paint(g);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                     }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                     </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   /*</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                    * </FONT></SPAN>繪制</P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                    */</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   protected void paintComponent(Graphics g) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>                            </SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            super.paintComponent(g);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            g.setColor(this.getBackground());</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            g.fillRect(0, 0, w = this.getWidth(), h = this.getHeight());</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            g.setColor(this.getForeground());</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            g.setFont(this.getFont());</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            g.drawString(text, x, h - 1);</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   public void run() {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            while (true) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     x -= 1;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     if (x < -w) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                               x = w;</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     this.repaint();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     try {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                               Thread.sleep(16);//</FONT></SPAN>間隔繪制<SPAN lang=EN-US><FONT face=Calibri>16</FONT></SPAN>毫秒</P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     } catch (InterruptedException e) {</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                               e.printStackTrace();</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                                     }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                            }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>                   }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>         }</FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri> </FONT></SPAN></P>

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT face=Calibri>}</FONT></SPAN></P>

 

 本文由用戶 lyz 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!