Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Eine Variable in verschiedenen Ereignisprozeduren benutzen
Hallo
Ich muss für die Schule ein Program erstellen, das einen zufälligen Dreiklang abspielt, den der Nutzer dann bestimmen muss.
Ich habe jetzt einen Dialog, in dem ein Button einen von sechs Dreiklängen zufällig abspielt:
Code:
public void jButton1_ActionPerformed(ActionEvent evt) {
// zufälligen Dreiklang abspielen
String dreiklaenge []= {
"Grundstellung in Dur.wav","Grundstellung in Moll.wav", "Sextakkord in Dur.wav","Sextakkord in Moll.wav","Quartsextakkord in Dur.wav","Quartsextakkord in Moll.wav"
};
Random random = new Random();
int i=random.nextInt(6);
String s= dreiklaenge [i];
SounddateiAbspielen a=new SounddateiAbspielen();
a.playSound(s);
} // end of jButton1_ActionPerformed
Nun habe ich unter diesem Button 6 jRadioButtons mit den 6 möglichen Dreiklängen, von denen einer direkt nach dem Hören angeklickt werden soll.
Dieser soll dann kontrollieren, ob die Lösung richtig ist, also ob die Aufschrift des jRadioButtons (+ ".wav") mit dem aktuellen Zufallsdreiklang übereinstimmt. Wie kann ich in die Ereignisprozedur des jRadioButtons die Variable s aus der Ereignesprozdur des jButtons übernehmen?
Code:
public void jRadioButton1_ActionPerformed(ActionEvent evt) {
// Eingabe kontrollieren
String k = "Grundstellung in Dur.wav";
if (k==s) {
// Richtig-Dialog öffnen
} // end of if
} // end of jRadioButton1_ActionPerformed
Also zum einen: Strings werden nicht per == sondern per equals verglichen. Somit wäre das ein "if (k.equals(s)) {". Und damit s zur Verfügung steht, musst Du die lokale Variable zu einer Instanzvariable machen. Damit sollte Dein Code evtl. schon funktionieren.
Ich würde das aber alles über den index machen. Du hast einfach zwei Arrays: Einmal die Bezeichnungen und einmal die JRadioButtons. Dann kannst Du eine eine einzige ActionPerformed Funktion nutzen, in der Du dann in einer Schleife die JRadioButtons aus dem Array mit evt.source. Und dann muss der Index mit der ermittelten Zufallszahl überein stimmen.
Nimm doch bitte [code=Java][/code], ich kann das echt schlecht lesen,
was sind denn Dreiklang? Ich hatte nur ganz kurz Musik als Fach,
unterschiedliche Sounds zu unterschiedlichen Zeitpunkten abspielen,
könnte für den Benutzer "unangenehmem/störend" sein....
Dreiklang sind drei Klänge (Töne), die gleichzeitig gespielt werden, auch dreistimmigen Akkord genannt.
Die Idee finde ich richtig gut für ein Spiel. Zumal man das ja auch schön schwer machen kann. Dur und Mol wird man noch relativ leicht unterscheiden können (mit etwas Übung) aber ich denke, dass es mit Umkehrungen dann durchaus schwerer werden dürfte - aber dafür bin ich auch schon zu lange raus aus dem Thema.
Oder vielleicht kann man auch ein Spiel machen, bei dem man Dreiklänge nachspielen muss. Ist dann natürlich nicht mehr das Beschriebene, aber auch sowas könnte ich mir gut vorstellen.
Ich hab auch schon Tonleitern und Intervalle eingespielt...alles fertig
Musik ist ja eigentlich was viel "Größeres" als Musiktheorie, aber ich gehe auf ein Musikgymnasium, da muss das halt sein...