Note that there are some explanatory texts on larger screens.

plurals
  1. POJFrame behaving weirdly
    primarykey
    data
    text
    <p>In my program, I am displaying images with a song in background. After song is finished, i need to close frame and <code>JInternalFrame</code>. Here is the code:</p> <pre><code>package projectfinal; import javax.swing.*; import java.io.File; import java.io.IOException; /* MORE IMPORTS */ public class ImagePanel extends javax.swing.JFrame { public static class audio extends JApplet { private static final int EXTERNAL_BUFFER_SIZE = 128000; public void aaudio() { String strFilename = "E:/zehreelay.wav"; File soundFile = new File(strFilename); AudioInputStream audioInputStream = null; try { audioInputStream = AudioSystem.getAudioInputStream(soundFile); } catch (Exception e) { e.printStackTrace(); System.exit(1); } AudioFormat audioFormat = audioInputStream.getFormat(); SourceDataLine line = null; DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); try { line = (SourceDataLine) AudioSystem.getLine(info); line.open(audioFormat); } catch (LineUnavailableException e) { e.printStackTrace(); System.exit(1); } catch (Exception e) { e.printStackTrace(); System.exit(1); } line.start(); int nBytesRead = 0; byte[] abData = new byte[EXTERNAL_BUFFER_SIZE]; while (nBytesRead != -1) { try { nBytesRead = audioInputStream.read(abData, 0, abData.length); } catch (IOException e) { e.printStackTrace(); } if (nBytesRead &gt;= 0) { int nBytesWritten = line.write(abData, 0, nBytesRead); } } line.drain(); line.close(); jInternalFrame1.setVisible(false); /** * closing internal frame */ } } /** * Creates new form NewJFrame */ public ImagePanel() { initComponents(); } @SuppressWarnings("unchecked") // &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt; private void initComponents() { jInternalFrame1 = new javax.swing.JInternalFrame(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane()); //////////more code//////////////////////////////////// jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout); jInternalFrame1.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentHidden(java.awt.event.ComponentEvent evt) { hiden(evt); } }); /////adding a listner for component/// } public static void main(String args[]) { start(); } private void hiden(java.awt.event.ComponentEvent evt) { setVisible(false); } public static void start() { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ImagePanel().setVisible(true); } }); audio obj = new audio(); obj.aaudio(); } private static javax.swing.JInternalFrame jInternalFrame1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; /////more variables...////// } </code></pre> <p>This code is fine, but when I tried out <em>without</em> adding a component listener, that is, <code>getRootPane().SetVisible(false)</code> or <code>jInternalFrame1.getContentPane().setVisible(false)</code> or <code>setVisible(false)</code> none of them was working, but it worked out only after adding a component hidden listener. Why? Any reasons?Then how come <code>JInternalFrame</code> was working (<code>JInternalFrame.setVisible(false)</code>)? Is this something to do with <code>rootPane()</code>?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload