2017-10-11 217 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

相关问题