import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Receiver;
import javax.sound.midi.ShortMessage;
import javax.sound.midi.Synthesizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KlassenName {
/**
* @param args
*/
public static void main(String[] args) {
MainWinCon mwc = new MainWinCon();
}
}
class MainWindow extends JFrame {
private MainWinCon mwc;
// Inhalte des Fensters etc
// Buttons
JButton bStart;
// Panels
JPanel pUp, pDown;
public MainWindow(MainWinCon mwc) {
this.mwc = mwc;
createWindow();
}
public void createWindow() {
setSize(700, 400);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pUp = new JPanel();
pUp.setLayout(null);
pUp.setBackground(Color.WHITE);
pDown = new JPanel(new GridLayout(2, 4));
pDown.setBackground(Color.WHITE);
pUp.setBounds(0, 0, 700, 293);
pDown.setBounds(0, 294, 700, 70);
this.add(pUp);
this.add(pDown);
bStart = new JButton("Start");
bStart.setBounds(290, 260, 120, 25);
bStart.setVisible(true);
bStart.addActionListener(mwc);
pUp.add(bStart);
setVisible(true);
}
public JPanel getUp() {
return this.pUp;
}
public JButton getStart() {
return this.bStart;
}
}
class MainWinCon implements ActionListener {
private MainWindow mw;
private Synthesizer synth;
private Receiver rcvr;
public MainWinCon() {
mw = new MainWindow(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(mw.getStart())) {
// Button Ausblenden
mw.getStart().setVisible(false);
// Ton spielen (bzw normalerweise Funktionsaufruf um ein Intervall
// zu spielen
new Thread(new Runnable() {
@Override
public void run() {
try {
synth = MidiSystem.getSynthesizer();
} catch (MidiUnavailableException e2) {
e2.printStackTrace();
}
try {
synth.open();
} catch (MidiUnavailableException e2) {
e2.printStackTrace();
}
try {
rcvr = synth.getReceiver();
} catch (MidiUnavailableException e1) {
e1.printStackTrace();
}
ShortMessage msg = new ShortMessage();
try {
msg.setMessage(ShortMessage.NOTE_ON, 0, 40, 100);
} catch (InvalidMidiDataException ex) {
ex.printStackTrace();
}
rcvr.send(msg, -1);
try {
Thread.sleep(1500);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
try {
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 100);
} catch (InvalidMidiDataException ex) {
ex.printStackTrace();
}
rcvr.send(msg, -1);
synth.close();
}
}).start();
} else {
System.out.println("Ein Fehler ist aufgetreten");
}
}
}