所以基本上,我正在尝试在java中创建一个基本的合成器,就像一个有趣的侧面项目 . 它目前有两个部分,两个部分都可以自行工作,但不能一起工作 . 第一部分设置合成器并播放音符 . 第二部分设置JFrame . 这是源文件:

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); 
        }    
    }  

}

它将进入“声音填充声明”声明,然后程序将停止响应,而不绘制窗口 . 知道是什么原因引起的吗?同样,JFrame相关的东西在没有声音的情况下编译得很好 .