Why doesn't validateTree works? - java

So, I've been looking a while for a solution to my problem, but it just doesn't work. Here is the piece of code that is giving me problems:
else if(xy==true || xz==true)
{
mm1.setVisible(true);
mm2.setVisible(true);
mm1.repaint();
mm2.repaint();
SwingUtilities.updateComponentTreeUI(this);
this.validateTree();
sound = java.applet.Applet.newAudioClip(getClass().getResource("/sonido/monster.wav"));
sound.play();
sound1 = java.applet.Applet.newAudioClip(getClass().getResource("/sonido/grito.wav"));
sound1.play();
try {
Thread.sleep(4000);
} catch (InterruptedException ex) {
Logger.getLogger(formulario2.class.getName()).log(Level.SEVERE, null, ex);
}
formulariogame over2=new formulariogame();
over2.setVisible(true);
this.dispose();
}
I've tried using the "synchronized" method, using repaint(), changing the order, but I keep getting this:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: This function should be called while holding treeLock
at java.awt.Component.checkTreeLock(Component.java:1196)
at java.awt.Container.validateTree(Container.java:1682)
at nivel_2.formulario2.AceptarActionPerformed(formulario2.java:148)
at nivel_2.formulario2.access$100(formulario2.java:20)
at nivel_2.formulario2$2.actionPerformed(formulario2.java:93)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
I don't get any error at the source editor, and using any other method, the JFrame doesn't refresh. What can I do to make it work?
Pd.: the error appears just when this block of code executes.

Do not use Thread.sleep() as it will freeze your Swing application.
Instead you should use a javax.swing.Timer.
See the Java tutorial How to Use Swing Timers and Lesson: Concurrency in Swing for more information and examples.

I think I haven't given enough informaton, or I'm too noob (I don't know), so I'm gonna put here all the class that is giving me problems (It's a Jbutton), changed with the recomendations you have given me (still not working):
private void AceptarActionPerformed(java.awt.event.ActionEvent evt) {
if(xy==true && Respuesta.getText().equals("verdadero"))
{
sound = java.applet.Applet.newAudioClip(getClass().getResource("/sonido/enter.wav"));
sound.play();
r1.setIcon(new ImageIcon(getClass().getResource("/imagenes2/escalera.png")));
r2.setVisible(true);
dialog.setText("<html>\n" +
"<font color='blue'><center><h4>¡BIEN HECHO!<br>ahora resuelve la siguiente<br>pista.</h4></center> </font>\n" +
"</html>");
x=100;
xy=false;
xz=true;
}
else if(xz==true && Respuesta.getText().equals("falso"))
{
r2.setIcon(new ImageIcon(getClass().getResource("/imagenes2/escalera.png")));
dialog.setText("<html>\n" +
"<font color='blue'><center><h4>¡GENIAL!<br>¡VAMOS A LA SIGUIENTE CÁMARA!</h4><h5>Haz click aquí</h5></center> </font>\n" +
"</html>");
x=2;
}
else if(xy==true || xz==true)
{
mm1.setVisible(true);
mm2.setVisible(true);
mm1.repaint();
mm2.repaint();
sound = java.applet.Applet.newAudioClip(getClass().getResource("/sonido/monster.wav"));
sound.play();
sound1 = java.applet.Applet.newAudioClip(getClass().getResource("/sonido/grito.wav"));
sound1.play();
Timer timer1= new Timer(4000, new ActionListener(){
#Override
public void actionPerformed(ActionEvent ae) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
timer1.start();
formulariogame over2=new formulariogame();
over2.setVisible(true);
this.dispose();
}
}
What I need, is that when timer1.starts(), the execution stops for 4 seconds, giving time for the program to refresh the image. If Timer method doesn't work for what I want, please give me another recommendation. I would thank you a lot if you could send me the corrected code.

Related

InputStream's "close()" method throwing NullPointerException [duplicate]

This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12 answers)
Closed 5 years ago.
I'm learning Java and trying to program a simple FTP application with an interface to transfer files between my PC and a server. I created the server on my own PC to test it.
I'm using the class FTPClient (org.apache.commons.net.ftp) to create the client (*FTPClient ftpClient = new FTPClient()*), JFileChooser as the client's interface (*JFileChooser fc_client = new JFileChooser*) and a JList as the server's interface (*JList list_server = new JList(new DefaultListModel()*).
I placed a JButton on the interface to transfer a file from the server to the client. It seems it works fine (is downloads the file I select on the server's file list), but it throws a NullPointerException when closing the InputStream after transferring a second file (it doesn't throw anything with the first file I transfer) and successive files.
This is the code for the ActionListener I added to the button:
download.addActionListener(new ActionListener(){
#Override
public void actionPerformed(ActionEvent ae) {
InputStream iStream = null;
try {
iStream = ftpClient.retrieveFileStream(ftpClient.printWorkingDirectory() + "/" + list_server.getSelectedValue().toString());
File f = new File(fc_client.getCurrentDirectory().getAbsolutePath() + "/" + list_server.getSelectedValue().toString());
FileUtils.copyInputStreamToFile(iStream, f);
fc_client.updateUI();
} catch (FileNotFoundException ex) {
Logger.getLogger(ClientInterface.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ClientInterface.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
iStream.close();
} catch (IOException ex) {
Logger.getLogger(ClientInterface.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
And here the info about the exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.mycompany.ftpclientproject.ClientInterface$4.actionPerformed(ClientInterface.java:174)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
The first line (com.mycompany.ftpclientproject.ClientInterface$4.actionPerformed(ClientInterface.java:174)) is referred to iStream.close().
Do you have any idea about what could be happening? Thank you.
It's not the close() method throwing the error, it's your call to an object that doesn't exists: iStream is null. Wrap it in a null check before calling methods on it, e.g.
if (iStream != null) {
iStream.close();
}
I would also check your Logger output to see why it's null.

synthesizer error in java

First time App work fine.But when I click "Speech" button for second time It make errors
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:684)
at com.sun.speech.freetts.jsapi.FreeTTSSynthesizer.handleAllocate(FreeTTSSynthesizer.java:98)
at com.sun.speech.engine.BaseEngine.allocate(BaseEngine.java:219)
at text2speech.GUI.speechFile(GUI.java:141)
at text2speech.GUI.jButton2ActionPerformed(GUI.java:159)
at text2speech.GUI.access$100(GUI.java:24)
at text2speech.GUI$2.actionPerformed(GUI.java:61)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Here is the code.
public void speechFile(){
String context=jTextArea1.getText();
try
{
System.setProperty("freetts.voices","com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
Central.registerEngineCentral("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral");
Synthesizer synthesizer =Central.createSynthesizer(new SynthesizerModeDesc(Locale.US));
synthesizer.allocate();
synthesizer.resume();
synthesizer.speakPlainText(context, null);
synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);
synthesizer.deallocate();
}
catch(IllegalArgumentException e)
{
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (AudioException e) {
e.printStackTrace();
} catch (EngineException e) {
e.printStackTrace();
}
}
The thing I don't understand is first it work fine.second time it makes errors.How to fix this.
I don't know much about this library or technique, but to me it seems odd that you would register the engine once for each use, and odd that you wouldn't reuse an existing synthesizer.
Have you tried creating the synthesizer once and using it twice?
to make the code read more than once, all you have to do to remove the synth.deallocate(); from your code, then you will be able to loop till you want.

Get dxdiag results using java

String filePath = "./results.txt";
// Use "dxdiag /t" variant to redirect output to a given file
ProcessBuilder pb = new ProcessBuilder("cmd.exe","/c","dxdiag","/t",filePath);
System.out.println("-- Executing dxdiag command --");
Process p = pb.start();
p.waitFor();
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line;
System.out.println(String.format("-- Printing %1$1s info --",filePath));
while((line = br.readLine()) != null){
if(line.trim().startsWith("Card name:")
|| line.trim().startsWith("Current Mode:")
|| line.trim().startsWith("Display Memory:"))
textArea_3.append(line.trim() + "\n");
}
} catch (IOException ex) {
ex.printStackTrace();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
The error that I get is
java.io.FileNotFoundException: .\results.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at java.io.FileReader.<init>(FileReader.java:58)
at gui.Gui$4.actionPerformed(Gui.java:136)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
I've tried it on Win7 (does not work) and on Win8(it works as expected). If anyone has a thought on what's going on I'd greatly appreciate the help, thx.
It seems to be a relative path problem. I'd recommend trying to add the line System.out.println(new File(filePath).getAbsolutePath()); before instantiating the buffered reader to see where exactly the system tries to look for the results file. You might also want to specify the output location for DXDIAG as an absolute path to ensure the results are stored where you want them to.
1st complete your code your class name missing.
2nd give main method public static void main(String args[]).
3rd take try block.
And 4th last one create TextArea object which is missing in your code :TextArea textArea_3 = new TextArea();
Code will work.

Java- RuntimeException- Uncompilable source code - Erroneous tree type

I'm new in Java also I'm new in this website, so I'm sorry if the error is obvious, but I got an error, that I dont know what it means, I have try everything to fix it.
I'm currently writing a basic aplication library, with some swing interface, but the problem is when trying to create a window of the form of books, there is the relevant code.
This is the principal window.
public class VentanaPrincipal extends javax.swing.JFrame {
public VentanaPrincipal() {
initComponents();
this.setLocationRelativeTo(null);
}
private void bt_salirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
EscribirBinario escritor = new EscribirBinario();
// Collections.sort(ListaClientes.clientes);
if (escritor.abrir(Main.archivo1)) {
for (int indice = 0; indice < ListaClientes.clientes.size(); indice++) {
escritor.escribir(ListaClientes.clientes.get(indice));
}
escritor.cerrar();
}
System.exit(0);
}
private void bt_clienteActionPerformed(java.awt.event.ActionEvent evt) {
MantenimientoCliente clientes = new MantenimientoCliente(this, true);
clientes.setVisible(true);
}
private void bt_libroActionPerformed(java.awt.event.ActionEvent evt) {
MantenimientoLibro book = new MantenimientoLibro(this, true);
book.setVisible(true);
}
}
There are the code of the form of books.
public class MantenimientoLibro extends javax.swing.JDialog {
public MantenimientoLibro() {
}
public MantenimientoLibro(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.setLocationRelativeTo(null);
}
public MantenimientoLibro(java.awt.Dialog parent, boolean modal) {
super(parent, modal);
initComponents();
this.setLocationRelativeTo(null);
}
private void bt_salirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.dispose();
}
private void bt_insertarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
FormularioLibro formulario = new FormularioLibro(this, true);
formulario.setVisible(true);
this.dispose();
}
}
And this is the error i got:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: TareaP2.MantenimientoLibro
at TareaP2.VentanaPrincipal.bt_libroActionPerformed(VentanaPrincipal.java:130)
at TareaP2.VentanaPrincipal.access$100(VentanaPrincipal.java:11)
at TareaP2.VentanaPrincipal$2.actionPerformed(VentanaPrincipal.java:51)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Have a look at the bug report here. It has the solution to your problem:
From the nbusers mailing list I got the following hint:
"workaround it by deselecting 'Compile On Save' in the project options".
The answer pointed out by Mark in the comments also goes along the same line. Here is the link again:
java.lang.RuntimeException: Uncompilable source code - what can cause this?
Exiting Netbeans and starting the compilar again resolved the issue.

Errors thrown when attemtping to play soung in Java Swing application

Making a Swing application in which a user selects an audio file using a radio button and plays it using the Play button. The GUI class call the method from a custom audio handler class. The audio files are in a package called audio. The following errors are thrown after sound selection and the user clicks the Play button:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sun.audio.AudioStream.<init>(AudioStream.java:63)
at my.quotesbutton.Player.fear(Player.java:18)
at my.quotesbutton.QuotesButtonUI.jButton3ActionPerformed(QuotesButtonUI.java:221)
at my.quotesbutton.QuotesButtonUI.access$000(QuotesButtonUI.java:16)
at my.quotesbutton.QuotesButtonUI$1.actionPerformed(QuotesButtonUI.java:66)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
The GUI class code as follows:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if (jRadioButton1.isSelected()){
Player play = new Player();
try {
play.fear();
} catch (IOException ex) {
Logger.getLogger(QuotesButtonUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
else if (jRadioButton2.isSelected()){
}
else if (jRadioButton3.isSelected()){
}
else if (jRadioButton4.isSelected()){
}
else if (jRadioButton5.isSelected()){
}
else if (jRadioButton6.isSelected()){
}
else {
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
The code for the audio handler class as follows:
package my.quotesbutton;
import java.io.*;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Player{
public void fear() throws IOException{
InputStream inputStream = getClass().getResourceAsStream("audio\\fear.wav");
AudioStream audioStream = new AudioStream(inputStream);
AudioPlayer.player.start(audioStream);
}
}
It seems like you are passing null to the AudioStream constructor. The value you pass it is obtained via getClass().getResourceAsStream().
From Java Class javadoc:
public InputStream getResourceAsStream(String name)
...
Returns:
A InputStream object or null if no resource with this name is found
So, the way this could return null is that the file is not found. The problem is in your file path. The path you are passing is relative. Try finding where your application's work directory is and correct the path relative to it.
EDIT: You can get the working directory via System.getProperty("user.dir").

Categories

Resources