Introduction
In this article, we are going to describe how we use the Internal Frame with a Jdesktop pane in
Java. And we also describe what an jinternal frame is and jdesktop and where they are used. JDesktop Pane is a container used to create a multiple-document interface or a virtual desktop. And this container is used to add jinternal frame objects. JInternal Frame is a class for displaying a frame like a window. Generally, you add internal frames to the desktop pane. The desktop pane, in turn, might be used as the content pane of a JFrame. The desktop pane is an instance of JDesktopPane, which is a subclass of JLayeredPane that has added API for managing multiple overlapping internal frames.
For easily creating an InternalFarme you have to use the following steps.
Step 1 - Importing the necessary package
- import javax.swing.JInternalFrame;
- import javax.swing.JDesktopPane;
- import javax.swing.JMenu;
- import javax.swing.JMenuItem;
- import javax.swing.JMenuBar;
- import javax.swing.JFrame;
- import java.awt.event.*;
- import java.awt.*;
Step 2 - Creating a Class with constructor and generally most everything is defined within the constructor.
- public class TestJInternalFrame extends JFrame
- {
- JDesktopPane jdp;
- static int fcount = 0;
Step 3 - Constructor Defining
- public TestJInternalFrame()
- {
-
- super("JInternalFrame Test");
- int inset = 50;
-
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 2);
-
- addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
-
- jdp = new JDesktopPane();
- createFrame();
- setContentPane(jdp);
- setJMenuBar(createMenuBar());
- jdp.putClientProperty("JDesktopPane.with internal frame", "outline");
- }
Step 4 - Now we create a menu bar and add a menu item Myframe:
- protected JMenuBar createMenuBar()
- {
- JMenuBar menuBar = new JMenuBar();
- JMenu menu = new JMenu("MyFrame");
- menu.setMnemonic(KeyEvent.VK_N);
- JMenuItem menuItem = new JMenuItem("New IFrame");
- menuItem.setMnemonic(KeyEvent.VK_N);
- menuItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- createFrame();
- }
- });
- menu.add(menuItem);
- menuBar.add(menu);
- return menuBar;
- }
Step 5 - Creating a frame.
- protected void createFrame() {
- MyInternalFrame frame = new MyInternalFrame();
- frame.setVisible(true);
- jdp.add(frame);
- try
- {
- frame.setSelected(true);
- } catch (java.beans.PropertyVetoException e)
- {
- System.out.println(e);
- }
- }
Step 6 - Main method, and here we create the object of my class
- public static void main(String[] args) {
- TestJInternalFrame frame = new TestJInternalFrame();
- frame.setVisible(true);
- }
Step 7 - Now we are creating an internal frame class.
- class MyInternalFrame extends JInternalFrame
- {
- static final int xCordinate = 40, yCordinate = 40;
-
- public MyInternalFrame()
- {
- super("Your Internal Frame " + (++fcount) + " is created", true, true, true, true);
- setSize(300, 300);
- setVisible(true);
- setLocation(xCordinate * fcount, yCordinate * fcount);
- }
- }
Complete code
- import javax.swing.JInternalFrame;
- import javax.swing.JDesktopPane;
- import javax.swing.JMenu;
- import javax.swing.JMenuItem;
- import javax.swing.JMenuBar;
- import javax.swing.JFrame;
- import java.awt.event.*;
- import java.awt.*;
- public class TestJInternalFrame extends JFrame
- {
- JDesktopPane jdp;
- static int fcount = 0;
- public TestJInternalFrame()
- {
- super("JInternalFrame Usage Demo");
- int inset = 50;
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 2);
- addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- jdp = new JDesktopPane();
- createFrame();
- setContentPane(jdp);
- setJMenuBar(createMenuBar());
- jdp.putClientProperty("JDesktopPane.dragMode", "outline");
- }
- protected JMenuBar createMenuBar()
- {
- JMenuBar menuBar = new JMenuBar();
- JMenu menu = new JMenu("Frame");
- menu.setMnemonic(KeyEvent.VK_N);
- JMenuItem menuItem = new JMenuItem("New IFrame");
- menuItem.setMnemonic(KeyEvent.VK_N);
- menuItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- createFrame();
- }
- });
- menu.add(menuItem);
- menuBar.add(menu);
- return menuBar;
- }
- protected void createFrame() {
- MyInternalFrame frame = new MyInternalFrame();
- frame.setVisible(true);
- jdp.add(frame);
- try
- {
- frame.setSelected(true);
- } catch (java.beans.PropertyVetoException e)
- {
- System.out.println(e);
- }
- }
- public static void main(String[] args) {
- TestJInternalFrame frame = new TestJInternalFrame();
- frame.setVisible(true);
- }
- class MyInternalFrame extends JInternalFrame
- {
- static final int xCordinate = 40, yCordinate = 40;
- public MyInternalFrame()
- {
- super("Your Internal Frame " + (++fcount) + " is created", true, true, true, true);
- setSize(300, 300);
- setVisible(true);
- setLocation(xCordinate * fcount, yCordinate * fcount);
- }
- }
- }
Output
Sample Cmd output where you run your program.
This is the initial output.
Now you click on the frame option of the menu bar and then click new frame.
Using the new frame option you can create n number of frames.
Resources