“线程中的异常”;AWT-EventQueue-0“;鼠标移动时的java.lang.NullPointerException

“线程中的异常”;AWT-EventQueue-0“;鼠标移动时的java.lang.NullPointerException,java,swing,jbutton,javasound,Java,Swing,Jbutton,Javasound,我想创建一个游戏,当我移动鼠标到一个按钮时,我想播放一个声音。 这是JFrame类: package jatek; public class jatek extends javax.swing.JFrame { public jatek() { initComponents(); } @SuppressWarnings("unchecked") // <editor-fold defau

我想创建一个游戏,当我移动鼠标到一个按钮时,我想播放一个声音。 这是JFrame类:

package jatek;

    public class jatek extends javax.swing.JFrame {

        public jatek() {
            initComponents();

        }

        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {

            UjJatek = new javax.swing.JButton();
            Kilepes = new javax.swing.JButton();
            jLabel1 = new javax.swing.JLabel();

            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("AKASZTOFA");
            setBounds(new java.awt.Rectangle(500, 250, 0, 0));
            setFocusable(false);
            setMaximumSize(new java.awt.Dimension(800, 560));
            setMinimumSize(new java.awt.Dimension(800, 550));
            setPreferredSize(new java.awt.Dimension(800, 545));
            setResizable(false);
            getContentPane().setLayout(null);

            UjJatek.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/szoveg.png"))); // NOI18N
            UjJatek.setBorderPainted(false);
            UjJatek.setContentAreaFilled(false);
            UjJatek.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    UjJatekMouseClicked(evt);
                }
                public void mouseEntered(java.awt.event.MouseEvent evt) {
                    UjJatekMouseEntered(evt);
                }
                public void mouseExited(java.awt.event.MouseEvent evt) {
                    UjJatekMouseExited(evt);
                }
            });
            getContentPane().add(UjJatek);
            UjJatek.setBounds(470, 160, 180, 50);

            Kilepes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/kilepes1.png"))); // NOI18N
            Kilepes.setBorderPainted(false);
            Kilepes.setContentAreaFilled(false);
            Kilepes.setFocusable(false);
            Kilepes.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    KilepesMouseClicked(evt);
                }
                public void mouseEntered(java.awt.event.MouseEvent evt) {
                    KilepesMouseEntered(evt);
                }
                public void mouseExited(java.awt.event.MouseEvent evt) {
                    KilepesMouseExited(evt);
                }
            });
            getContentPane().add(Kilepes);
            Kilepes.setBounds(480, 340, 170, 50);

            jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/hatter.png"))); // NOI18N
            getContentPane().add(jLabel1);
            jLabel1.setBounds(0, 0, 800, 533);

            pack();
        }// </editor-fold>                        

        private void UjJatekMouseEntered(java.awt.event.MouseEvent evt) {                                     
            // TODO add your handling code here:
            //Sound hang = new Sound("button.wav");
            //hang.playSoundOnce();
            UjJatek.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/szoveg2.png")));
        }                                    

        private void UjJatekMouseExited(java.awt.event.MouseEvent evt) {                                    
            // TODO add your handling code here:
            UjJatek.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/szoveg.png")));
        }                                   

        private void KilepesMouseEntered(java.awt.event.MouseEvent evt) {                                     
            // TODO add your handling code here:
            Kilepes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/kilepes2.png")));
        }                                    

        private void KilepesMouseExited(java.awt.event.MouseEvent evt) {                                    
            // TODO add your handling code here:
            Kilepes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jatek/kilepes1.png")));
        }                                   

        private void KilepesMouseClicked(java.awt.event.MouseEvent evt) {                                     
            // TODO add your handling code here:
            System.exit(0);
        }                                    

        private void UjJatekMouseClicked(java.awt.event.MouseEvent evt) {                                     
            // TODO add your handling code here:
            this.setVisible(false);
            jatek2 j = new jatek2();
            j.setBounds(this.getBounds());
            j.setMinimumSize(this.getMinimumSize());
            j.setVisible(true);

        }                                    

        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(jatek.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(jatek.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(jatek.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(jatek.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>

            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new jatek().setVisible(true);
                }
            });
        }

        // Variables declaration - do not modify                     
        private javax.swing.JButton Kilepes;
        private javax.swing.JButton UjJatek;
        private javax.swing.JLabel jLabel1;
        // End of variables declaration                   
    }

有人能帮我吗…或者有人能给我一个更好的方法,当我在按钮上移动鼠标时,如何播放声音。谢谢

因为applet类是作为应用程序运行的,
getCodeBase()
将抛出一个
NPE
,在这种情况下,由于您没有显示异常跟踪信息,因此将以静默方式抛出。在Swing应用程序中不需要使用小程序类。您可以直接从
InputStream

AudioInputStream stream = 
   AudioSystem.getAudioInputStream(getClass().getResource("/sounds/button.wav"));
Clip clip = AudioSystem.getClip();
clip.open(stream);
clip.start();

ex.发生在哪一行?请发布完整的堆栈跟踪。最有可能的情况是,您的声音类构造函数中存在异常,您正在消耗该异常。永远不要吞咽
exception
s。从不。将形式为
catch(异常e){..
的代码更改为
catch(异常e){e.printStackTrace();//非常有用!
谢谢…现在我听到声音,但错误不断出现,当我按下“kilepes”按钮时,意味着关闭,程序不会关闭。别忘了调用
clip.close()
在尝试退出之前关闭音频资源
AudioInputStream stream = 
   AudioSystem.getAudioInputStream(getClass().getResource("/sounds/button.wav"));
Clip clip = AudioSystem.getClip();
clip.open(stream);
clip.start();