今天看到论坛上有人问关于内部窗体相关的问题,觉得挺有趣就写了个小例子,存在博客以备后用
package demo;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSplitPane;
import javax.swing.JTree;
public class DemoInnerFrame extends JApplet {
private JTree tree;
private JDesktopPane desktopPane;
public DemoInnerFrame() {
super();
getContentPane().setLayout(null);
final JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, 500, 375);
getContentPane().add(panel);
final JSplitPane splitPane = new JSplitPane();
splitPane.setDividerLocation(150);
splitPane.setBounds(0, 5, 490, 370);
panel.add(splitPane);
final JPanel panel_1 = new JPanel();
panel_1.setLayout(null);
splitPane.setLeftComponent(panel_1);
tree = new JTree();
tree.setBounds(0, 0, 163, 358);
panel_1.add(tree);
final JPanel panel_2 = new JPanel();
panel_2.setLayout(null);
splitPane.setRightComponent(panel_2);
desktopPane = new JDesktopPane();
desktopPane.setBounds(0, 0, 472, 358);
panel_2.add(desktopPane);
final JPopupMenu popupMenu = new JPopupMenu();
addPopup(desktopPane, popupMenu);
final JMenuItem menuItem = new JMenuItem();
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
creatInnerFrame();
}
});
menuItem.setText("新建内部窗体");
popupMenu.add(menuItem);
setSize(520, 400);
//
}
public void creatInnerFrame() {
JInternalFrame internalFrame = new JInternalFrame("示例内部窗体", true, true,
true, true);
internalFrame.getContentPane().setLayout(null);
internalFrame.setVisible(true);
internalFrame.setBounds(0, 0, 254, 334);
desktopPane.add(internalFrame);
JPanel panel_3 = new JPanel();
panel_3.setLayout(null);
panel_3.setBounds(0, 0, 254, 334);
internalFrame.getContentPane().add(panel_3);
JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "您点击了示例按钮!");
}
});
button.setText("示例按钮");
button.setBounds(43, 100, 100, 20);
panel_3.add(button);
}
private static void addPopup(Component component, final JPopupMenu popup) {
component.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
showMenu(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
showMenu(e);
}
private void showMenu(MouseEvent e) {
popup.show(e.getComponent(), e.getX(), e.getY());
}
});
}
}