# .Wav Datei vor main-Methode abspielen?



## PaddyFH (9. Jun 2018)

Ich will, dass eine WAV-Datei abgespielt wird, wenn, zum Beispiel "playerProbability" eins ist. Jedoch müsste ich dies vor der main-Methode machen, oder? Tut mir leid, wenn ich heute auf dem Schlauch stehe und die Lösung eigentlich einfach wäre Hier noch der Code:


```
import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;

    import javax.swing.AbstractAction;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.KeyStroke;

    public class Grafik extends JFrame implements ActionListener {

    private JButton button;

       public Grafik() {
           getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                   KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "Cancel");
               getRootPane().getActionMap().put("Cancel", new AbstractAction(){
                   public void actionPerformed(ActionEvent e)
                   {
                       dispose();
                   }
               });
           button = new JButton();
           button.addActionListener(this);
           button.setIcon(new ImageIcon("image.jpg"));

           this.getContentPane().add(button);

       }
       public void actionPerformed(ActionEvent e) {
           if(e.getSource() == button){
               int playerProbability =(int)(Math.random()*5+1);
               if (playerProbability == 1 ) {
                   System.out.println("text");
                   //sound
               }  
               else {
                   System.out.println("text");
                   //sound
                   int computerProbability =(int)(Math.random()*5+1);
                       if (computerProbability == 1) {
                           System.out.println("text");
                           //sound
                       }
                       else {
                           System.out.println("text");
                           //sound
                       }
               }
           }
       }
       public static void main(String[] args) {
           JFrame bec = new Grafik();
           bec.setDefaultCloseOperation(Grafik.EXIT_ON_CLOSE);
           bec.setSize(634, 634);
           bec.setVisible(true);
           bec.setTitle("title");
           bec.requestFocus();
      }
    }
```
Danke für die Hilfe!


----------



## Java xyrse123 (9. Jun 2018)

Ein static block wird vor der main Methode ausgeführt, vielleicht hilft es dir ja weiter.


```
static {
// hier die Musik abspielen
}
```


----------



## mrBrown (9. Jun 2018)

Java xyrse123 hat gesagt.:


> Ein static block wird vor der main Methode ausgeführt, vielleicht hilft es dir ja weiter.


Bitte nicht...




PaddyFH hat gesagt.:


> Ich will, dass eine WAV-Datei abgespielt wird, wenn, zum Beispiel "playerProbability" eins ist. Jedoch müsste ich dies vor der main-Methode machen, oder? Tut mir leid, wenn ich heute auf dem Schlauch stehe und die Lösung eigentlich einfach wäre Hier noch der Code:


Die main-Methode ist der Start deines Programms, ein "davor" solltest du einfach als nicht existent ansehen.
Die Variable `playerProbability` gibt es auch nur in der einen Methode - außerhalb existiert sie einfach nicht. Wenn das abspielen abhängig von dieser ist, dann muss es in der Methode passieren (oder mindestens danach, damit du den Wert passend weitergeben kannst).
Die entsprechenden Stellen hast du ja schon markiert, dort musst du dann einfach noch den Sound abspielen. "vor der main-Methode" ist da aber nichts bei.


----------



## Java xyrse123 (9. Jun 2018)

> Bitte nicht...


Wieso den nicht? 
In der Insel stand es so beschrieben


----------



## mrBrown (9. Jun 2018)

Java xyrse123 hat gesagt.:


> Wieso den nicht?
> In der Insel stand es so beschrieben


Theoretisch geht das schon...aber Musik abspielen gehört ganz sicher nicht zur Initialisierung der Klasse, oder?


----------



## Java xyrse123 (9. Jun 2018)

> Theoretisch geht das schon...aber Musik abspielen gehört ganz sicher nicht zur Initialisierung der Klasse, oder?


Ja stimmt. Ich verstehe den Sinn davon auch nicht, die Musik vor der main Methode abzuspielen.


----------



## mihe7 (9. Jun 2018)

PaddyFH hat gesagt.:


> Jedoch müsste ich dies vor der main-Methode machen, oder?


Nö, die Reihenfolge der Methoden einer Klasse spielt im Quelltext keine Rolle


----------



## PaddyFH (9. Jun 2018)

Java xyrse123 hat gesagt.:


> Ja stimmt. Ich verstehe den Sinn davon auch nicht, die Musik vor der main Methode abzuspielen.


Ich finde es an sich natürlich auch nicht gut/ praktisch, aber da der Sound von der Initalisierung der Klasse abhängig ist, und ich die main Methode natürlich nicht davor setzen kann versuche ich den Sound dort abzuspielen. Oder brauch ich einen ganz anderen Ansatz?


----------



## mrBrown (9. Jun 2018)

PaddyFH hat gesagt.:


> aber da der Sound von der Initalisierung der Klasse abhängig ist


Ist er das?


----------



## mihe7 (9. Jun 2018)

Der Sound ist von der Initialisierung der Klasse abhängig?!? Wovon sprichst Du?


----------

