SimpleInternalFrameDemo.java Source code

Java tutorial

Introduction

Here is the source code for SimpleInternalFrameDemo.java

Source

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class SimpleInternalFrameDemo extends Frame {

    JButton openButton, macButton, javaButton, motifButton, winButton;

    JLayeredPane desktop;

    JInternalFrame internalFrame;

    public SimpleInternalFrameDemo() {
        super("Internal Frame Demo");
        setSize(500, 400);
        openButton = new JButton("Open");
        macButton = new JButton("Mac");
        javaButton = new JButton("Metal");
        motifButton = new JButton("Motif");
        winButton = new JButton("Windows");
        Panel p = new Panel();
        p.add(openButton);
        p.add(macButton);
        p.add(javaButton);
        p.add(motifButton);
        p.add(winButton);
        add(p, BorderLayout.SOUTH);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        openButton.addActionListener(new OpenListener());
        LnFListener lnf = new LnFListener(this);
        macButton.addActionListener(lnf);
        javaButton.addActionListener(lnf);
        motifButton.addActionListener(lnf);
        winButton.addActionListener(lnf);

        // Set up the layered pane
        desktop = new JDesktopPane();
        desktop.setOpaque(true);
        add(desktop, BorderLayout.CENTER);
    }

    // An inner class to handle presses of the Open button
    class OpenListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            if ((internalFrame == null) || (internalFrame.isClosed())) {
                internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);
                internalFrame.setBounds(50, 50, 200, 100);
                desktop.add(internalFrame, new Integer(1));
                internalFrame.setVisible(true);
            }
        }
    }

    public static void main(String args[]) {
        SimpleInternalFrameDemo sif = new SimpleInternalFrameDemo();
        sif.setVisible(true);
    }
}

class LnFListener implements ActionListener {
    Frame frame;

    public LnFListener(Frame f) {
        frame = f;
    }

    public void actionPerformed(ActionEvent e) {
        String lnfName = null;
        if (e.getActionCommand().equals("Mac")) {
            lnfName = "com.apple.mrj.swing.MacLookAndFeel";
        } else if (e.getActionCommand().equals("Metal")) {
            lnfName = "javax.swing.plaf.metal.MetalLookAndFeel";
        } else if (e.getActionCommand().equals("Motif")) {
            lnfName = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        } else if (e.getActionCommand().equals("Windows")) {
            lnfName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        } else {
            System.err.println("Unrecognized L&F request action: " + e.getActionCommand());
            return;
        }
        try {
            UIManager.setLookAndFeel(lnfName);
            SwingUtilities.updateComponentTreeUI(frame);
        } catch (UnsupportedLookAndFeelException ex1) {
            System.err.println("Unsupported LookAndFeel: " + lnfName);
        } catch (ClassNotFoundException ex2) {
            System.err.println("LookAndFeel class not found: " + lnfName);
        } catch (InstantiationException ex3) {
            System.err.println("Could not load LookAndFeel: " + lnfName);
        } catch (IllegalAccessException ex4) {
            System.err.println("Cannot use LookAndFeel: " + lnfName);
        }
    }
}