Swing内部窗体示例

今天看到论坛上有人问关于内部窗体相关的问题,觉得挺有趣就写了个小例子,存在博客以备后用

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());
   }
  });
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值