ganown
asked on
JInternalFrame Not Closing in JDesktopPane
Hello All,
The JInternalFrame which opens inside a JDeskTopPane closes for the first time when I click on the top right and when I opens the JInternalFrame again without going out of the Application it is not closing it. I have tried in many ways, but I don't understand what is the mistake I am making. I am using jdk1.2.1. Below I have attached the code. It will be great, if any one can help me out to find a solution for this problem.
Thanks In Advance,
Ganesh
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class windowVerify extends JFrame
{
JDesktopPane deskTop;
JInternalFrame displayFrame;
public windowVerify()
{
try
{
UIManager.setLookAndFeel(U IManager.g etSystemLo okAndFeelC lassName() );
}
catch (Exception e)
{
System.out.println("Except ion-1 " + getClass().getName() + " - Default Constructor : " + e.getMessage() + " : " + e.toString());
}
try
{
deskTop = new JDesktopPane();
intlFrame iFrame = new intlFrame();
this.setJMenuBar(iFrame.ge tMenus ());
displayFrame = iFrame.getFrame();
deskTop.setOpaque (false);
getContentPane().add(deskT op, BorderLayout.CENTER);
}
catch(Exception e)
{
System.out.println("Except ion-2 " + e.getMessage () + e.toString ());
}
}
public static void main(String[] args)
{
windowVerify frame = new windowVerify();
frame.setSize(200,200);
frame.show ();
}
public class intlFrame extends InternalFrameAdapter
{
JInternalFrame jFrame;
public intlFrame()
{
jFrame = new JInternalFrame("Window Verify",true,true,true,tru e);
jFrame.setSize(150,150);
JPanel panel = new JPanel();
panel.setSize(100,100);
panel.setVisible(true);
jFrame.getContentPane ().add(panel);
}
public JInternalFrame getFrame()
{
/* jFrame.addInternalFrameLis tener (new InternalFrameListener(){
public void internalFrameActivated(jav ax.swing.e vent.Inter nalFrameEv ent A)
{
System.out.println("intern alFrameAct ivated");
}
public void internalFrameClosed(javax. swing.even t.Internal FrameEvent A)
{
System.out.println("intern alFrameClo sed");
}
public void internalFrameIconified(jav ax.swing.e vent.Inter nalFrameEv ent A)
{
System.out.println("intern alFrameIco nified");
}
public void internalFrameClosing(javax .swing.eve nt.Interna lFrameEven t A)
{
System.out.println("intern alFrameClo sing");
}
public void internalFrameDeactivated(j avax.swing .event.Int ernalFrame Event A)
{
System.out.println("intern alFrameDea ctivated") ;
}
public void internalFrameDeiconified(j avax.swing .event.Int ernalFrame Event A)
{
System.out.println("intern alFrameDei conified") ;
}
public void internalFrameOpened(javax. swing.even t.Internal FrameEvent A)
{
System.out.println("intern alFrameOpe ned");
}
});*/
return jFrame;
}
public JMenuBar getMenus()
{
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem menuItem1 = new JMenuItem("Show");
menuItem1.addActionListene r (new ActionListener(){
public void actionPerformed(java.awt.e vent.Actio nEvent A)
{
deskTop.add(getFrame(), JDesktopPane.PALETTE_LAYER );
}
});
JMenuItem menuItem2 = new JMenuItem("Remove");
menuItem2.addActionListene r (new ActionListener(){
public void actionPerformed(java.awt.e vent.Actio nEvent A)
{
deskTop.remove(jFrame);
}
});
JMenuItem menuItem3 = new JMenuItem("Exit");
menuItem3.addActionListene r (new ActionListener(){
public void actionPerformed(java.awt.e vent.Actio nEvent A)
{
System.exit(0);
}
});
menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
menuBar.add(menu);
return menuBar;
}
public void internalFrameActivated(jav ax.swing.e vent.Inter nalFrameEv ent A)
{
System.out.println("intern alFrameAct ivated");
}
public void internalFrameClosed(javax. swing.even t.Internal FrameEvent A)
{
System.out.println("intern alFrameClo sed");
}
public void internalFrameIconified(jav ax.swing.e vent.Inter nalFrameEv ent A)
{
System.out.println("intern alFrameIco nified");
}
public void internalFrameClosing(javax .swing.eve nt.Interna lFrameEven t A)
{
System.out.println("intern alFrameClo sing");
}
public void internalFrameDeactivated(j avax.swing .event.Int ernalFrame Event A)
{
System.out.println("intern alFrameDea ctivated") ;
}
public void internalFrameDeiconified(j avax.swing .event.Int ernalFrame Event A)
{
System.out.println("intern alFrameDei conified") ;
}
public void internalFrameOpened(javax. swing.even t.Internal FrameEvent A)
{
System.out.println("intern alFrameOpe ned");
}
}
}
The JInternalFrame which opens inside a JDeskTopPane closes for the first time when I click on the top right and when I opens the JInternalFrame again without going out of the Application it is not closing it. I have tried in many ways, but I don't understand what is the mistake I am making. I am using jdk1.2.1. Below I have attached the code. It will be great, if any one can help me out to find a solution for this problem.
Thanks In Advance,
Ganesh
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class windowVerify extends JFrame
{
JDesktopPane deskTop;
JInternalFrame displayFrame;
public windowVerify()
{
try
{
UIManager.setLookAndFeel(U
}
catch (Exception e)
{
System.out.println("Except
}
try
{
deskTop = new JDesktopPane();
intlFrame iFrame = new intlFrame();
this.setJMenuBar(iFrame.ge
displayFrame = iFrame.getFrame();
deskTop.setOpaque (false);
getContentPane().add(deskT
}
catch(Exception e)
{
System.out.println("Except
}
}
public static void main(String[] args)
{
windowVerify frame = new windowVerify();
frame.setSize(200,200);
frame.show ();
}
public class intlFrame extends InternalFrameAdapter
{
JInternalFrame jFrame;
public intlFrame()
{
jFrame = new JInternalFrame("Window Verify",true,true,true,tru
jFrame.setSize(150,150);
JPanel panel = new JPanel();
panel.setSize(100,100);
panel.setVisible(true);
jFrame.getContentPane ().add(panel);
}
public JInternalFrame getFrame()
{
/* jFrame.addInternalFrameLis
public void internalFrameActivated(jav
{
System.out.println("intern
}
public void internalFrameClosed(javax.
{
System.out.println("intern
}
public void internalFrameIconified(jav
{
System.out.println("intern
}
public void internalFrameClosing(javax
{
System.out.println("intern
}
public void internalFrameDeactivated(j
{
System.out.println("intern
}
public void internalFrameDeiconified(j
{
System.out.println("intern
}
public void internalFrameOpened(javax.
{
System.out.println("intern
}
});*/
return jFrame;
}
public JMenuBar getMenus()
{
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem menuItem1 = new JMenuItem("Show");
menuItem1.addActionListene
public void actionPerformed(java.awt.e
{
deskTop.add(getFrame(), JDesktopPane.PALETTE_LAYER
}
});
JMenuItem menuItem2 = new JMenuItem("Remove");
menuItem2.addActionListene
public void actionPerformed(java.awt.e
{
deskTop.remove(jFrame);
}
});
JMenuItem menuItem3 = new JMenuItem("Exit");
menuItem3.addActionListene
public void actionPerformed(java.awt.e
{
System.exit(0);
}
});
menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
menuBar.add(menu);
return menuBar;
}
public void internalFrameActivated(jav
{
System.out.println("intern
}
public void internalFrameClosed(javax.
{
System.out.println("intern
}
public void internalFrameIconified(jav
{
System.out.println("intern
}
public void internalFrameClosing(javax
{
System.out.println("intern
}
public void internalFrameDeactivated(j
{
System.out.println("intern
}
public void internalFrameDeiconified(j
{
System.out.println("intern
}
public void internalFrameOpened(javax.
{
System.out.println("intern
}
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Sorry, for not clearly mentioning the problem. After I added your code it is working fine. But, without including your code, why it is working for the first time alone?
Ganesh
Ganesh
Because 'isClosed' is a state that is cleared at JInternalFrame creation time. Then you close it, so it is set. But when you re-add it again the 'isClosed' state is not reset.
ASKER
It is working fine, but why it is working for the first time alone and why not on the second time.
Ganesh