2016-05-19 18 views
0

Dieses Programm kann anzeigen und mit einem Anruf an die Hauptperson und es kann eine Audiodatei wiedergeben, wenn das Applet ausgeführt wird. Gibt es eine Möglichkeit, beides gleichzeitig zu tun?Wie spiele ich eine Audiodatei ab und zeige gleichzeitig ein Bild mit einem Applet an?

public class DisplayWinner extends JApplet { 

    public static void main(String[] args) throws IOException { 

    ArrayList<String> images = new ArrayList<String>(); 
    int temp = (int)(Math.random()*2); 
    String i1 ="0.png"; 
    String i2 ="1.jpg"; 

    images.add(i1); 
    images.add(i2); 

    JFrame frame=new JFrame(); 
    BufferedImage img = ImageIO.read(new File(images.get(temp))); 
    ImageIcon icon = new ImageIcon(img); 
    JLabel label = new JLabel(icon); 

    frame.add(label); 
    frame.setExtendedState(frame.getExtendedState()|JFrame.MAXIMIZED_BOTH); 
    frame.setVisible(true); 
} 

public void init(){ 
    AudioClip ac = getAudioClip(getCodeBase(), "39602- John_Cena_(ShortMp3.com).wav"); 
    ac.play(); 
} 
} 
+0

Sie können Ihre JLabel zum Applet hinzuzufügen. Aber Applets dürfen keine Dateien lesen. Sie müssen das Bild stattdessen als [Ressource] (https://stackoverflow.com/tags/embedded-resource/info) lesen. – VGR

+0

es ist falsch zu sagen, dass Applets keine Dateien lesen können – gpasch

+0

Ein Applet würde normalerweise keine 'main (String [])' Methode haben und wenn es als Applet gestartet wird, wird 'main' nicht aufgerufen. Verschieben Sie diesen Code in die Methode 'init()' (oder eine andere Methode, die aufgerufen wird). –

Antwort

2

Dies ist, was ich in der init-Methode haben:

public void init() { 

    ArrayList<String> images = new ArrayList<String>(); 
    int temp = (int)(Math.random()*2); 
    String i1 ="bm-0.png"; 
    String i2 ="bm-1.jpg"; 

    images.add(i1); 
    images.add(i2); 

    img=getImage(getDocumentBase(), "./"+images.get(temp)); 

    mt=new MediaTracker(this); 

    mt.addImage(img, 0); 

    try{ 
     mt.waitForID(0); 
    } 
    catch(InterruptedException e) { e.printStackTrace(); } 

    try { 
     AudioClip ac = getAudioClip(getCodeBase(), "e-20.wav"); 
     ac.play(); 
    } 
    catch(Exception e) { e.printStackTrace(); } 
} 

und in der Farbe Methode

public void paint(Graphics g) {  
    g.drawImage(img, 0, 0, this); 
    }