Java JFrame和MIDI在一起时不工作
所以,基本上,我正在尝试用java制作一个基本的合成器,作为一个有趣的项目。目前它有两个部分,两个部分都可以单独工作,但不能同时工作。第一部分设置合成器并播放音符。第二部分建立了一个JFrame。这是源文件:Java JFrame和MIDI在一起时不工作,java,swing,midi,Java,Swing,Midi,所以,基本上,我正在尝试用java制作一个基本的合成器,作为一个有趣的项目。目前它有两个部分,两个部分都可以单独工作,但不能同时工作。第一部分设置合成器并播放音符。第二部分建立了一个JFrame。这是源文件: import javax.sound.midi.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main { public static void main
import javax.sound.midi.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
public static void main(String[] args) throws Exception {
try {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel[] channels = synth.getChannels();
channels[0].noteOn(60, 60);
Thread.sleep(200);
channels[0].noteOff(60);
synth.close();
System.out.println("Did the sound stuff.");
JPanel pane = new JPanel();
JFrame frame = new JFrame("Sound1");
JButton button1 = new JButton("Click me!");
System.out.println("Things added.");
pane.add(button1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pane);
System.out.println("Pane added.");
frame.setSize(300,200);
frame.setVisible(true);
System.out.println("frame is visible now.");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Clicked!");
}
});
} catch (MidiUnavailableException e) {
System.out.println(e);
System.exit(1);
}
}
}
它将进入“didthesoundstuff”语句,然后程序将停止响应,而不绘制窗口。你知道这是什么原因吗?同样,JFrame相关的东西在没有声音的情况下也能很好地编译。你的代码对我来说很好,但是你可能会阻止EDT。您应该确保UI也是在EDT的上下文中创建的,有关更多详细信息,请参阅您的代码对我来说运行良好,但您可能会阻止EDT。您应该确保UI也是在EDT上下文中创建的,有关更多详细信息,请参阅