“线程中的异常”;AWT-EventQueue-0“;鼠标移动时的java.lang.NullPointerException
我想创建一个游戏,当我移动鼠标到一个按钮时,我想播放一个声音。 这是JFrame类:“线程中的异常”;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
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();