2017-10-11 439 views
0

這是我試過的。 基本上是一個橫幅,其中顯示滾動文字和閃爍圖像。我沒有得到任何輸出,但似乎正在運行的進程中。 我的問題聲明說,使用Applet和多線程創建一個橫幅,其中每個線程正在執行不同的任務。 如:而其他正在播放的音樂等如何爲不同的任務使用不同的線程?


class Text extends Applet implements Runnable { 
    String msg = " Marvel Electronics "; 
    boolean stopFlag; 
    Thread t1 = null; 
    public void init() { 
     setBackground(Color.CYAN); 
     setForeground(Color.BLACK); 
    } 
    public void start() { 
     t1 = new Thread(this); 
     stopFlag=false; 
     t1.start(); 
    } 
    public void run() { 
     char c; 
     for(;;) { 
      try { 
       repaint(); 
       Thread.sleep(300); 
       c = msg.charAt(0); 
       msg=msg.substring(1, msg.length()); 
       msg+=c; 
       if(stopFlag) 
        break; 
      } catch(InterruptedException e) { 
       System.out.println(e); 
      } 
     } 
    } 
    public void stop() { 
     stopFlag=true; 
     t1 = null; 
    } 
    public void paint(Graphics g) { 
     g.drawString(msg, 20, 30); 
     showStatus("Banner"); 
    } 
} 
class Image extends Applet implements Runnable { 
    Thread t2 = null; 
    public void start() { 
     t2 = new Thread(this); 
     t2.start(); 
    } 
    public void run() { 
     for(;;) { 
      try { 
       repaint(); 
       Thread.sleep(200); 
      } catch (InterruptedException e) { 
       System.out.println(e); 
      } 
     } 
    } 
    public void paint(Graphics gfx) { 
     gfx.setColor(Color.WHITE); 
     gfx.fillRect(20, 50, 50, 50); 
     gfx.setColor(Color.DARK_GRAY); 
     gfx.fillOval(25, 55, 30, 30); 
     gfx.drawString("ME", 35, 65); 
    } 
    public void stop() { 
     t2 = null; 
    } 
} 
public class Banner { 
    public static void main(String args[]) { 
     Text t = new Text(); 
     Image i = new Image(); 
     t.start(); 
     i.start(); 
    } 
} 

有不到屏幕上的輸出,但月食顯示進程在運行一個線程顯示滾動的橫幅。請幫助我。謝謝。

+3

小程序陳舊/過時/ [棄用](https://docs.oracle.com/javase/9​​/docs/api/java/applet/Applet.html)。你爲什麼寫小程序? – Andreas

+0

要運行實現可運行的類,您應該實例化一個Thread類,然後將Text類的實例作爲參數。否則,將永遠不會調用該方法運行 – guser

+0

您沒有調用任何方法來顯示小程序,只要我可以看到。 – Haem

回答

0

您正在錯誤地啓動您的小程序。你必須通過html或者awt swing Container的applet標籤來執行它。檢查:http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/applet/index.html

你可以用這個啓動:

public class Banner { 

    public static void main(String args[]) { 
     JFrame frame = new JFrame(); 
     frame.setSize(400, 300); 

     Text t = new Text(); 
     Image i = new Image(); 
     t.start(); 
     i.start(); 

     frame.getContentPane().add(t); 

     frame.setVisible(true); 
     i.init(); 
     i.start(); 
     t.init(); 
     t.start(); 
    } 
} 

它會告訴你用背景色和運行文本JFrame中:

result

+0

同意。我能夠做到這一點。但是,當涉及到兩個不同的任務使用兩個線程,並顯示在同一個屏幕上,我似乎無法做到這一點。 –

+0

在代碼中應該有一個'frame.getContentPane()。add(i);'來添加第二個小程序。 – Haem

相關問題