package com.what21.demo03;
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;
public class SimpleInternalFrame extends Frame {
private static final long serialVersionUID = 2836748548836950487L;
private JButton openButton, macButton, javaButton, motifButton, winButton;
private JLayeredPane desktop;
// 内部窗口
private JInternalFrame internalFrame;
public SimpleInternalFrame() {
super("Internal Frame Demo");
this.setSize(500, 400);
this.openButton = new JButton("Open");
this.macButton = new JButton("Mac");
this.javaButton = new JButton("Metal");
this.motifButton = new JButton("Motif");
this.winButton = new JButton("Windows");
Panel p = new Panel();
p.add(this.openButton);
p.add(this.macButton);
p.add(this.javaButton);
p.add(this.motifButton);
p.add(this.winButton);
add(p, BorderLayout.SOUTH);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.openButton.addActionListener(new OpenListener());
ButionActionListener lnf = new ButionActionListener(this);
this.macButton.addActionListener(lnf);
this.javaButton.addActionListener(lnf);
this.motifButton.addActionListener(lnf);
this.winButton.addActionListener(lnf);
desktop = new JDesktopPane();
desktop.setOpaque(true);
add(desktop, BorderLayout.CENTER);
}
// 成员内部类
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);
}
}
}
/**
* @param args
*/
public static void main(String args[]) {
SimpleInternalFrame sif = new SimpleInternalFrame();
sif.setVisible(true);
}
}
package com.what21.demo03;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class ButionActionListener implements ActionListener {
//窗口
private Frame frame;
/**
* 构造方法
*
* @param f
*/
public ButionActionListener(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);
}
}
}