国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

淺析Swing實現(xiàn)MDI的方法

開發(fā) 后端
本文介紹Swing實現(xiàn)MDI風格界面的基礎是JInternalFrame和JDesktopPane。以及介紹Swing實現(xiàn)MDI的方法。
JConsole是一個基于JMX的GUI工具,用于連接正在運行的JVM,它是一個MDI風格的Java桌面應用。Swing實現(xiàn)MDI風格界面的基礎是JInternalFrame和JDesktopPane。以下是Swing實現(xiàn)MDI的方法:
  1. import java.awt.BorderLayout;  
  2. import java.awt.Container;  
  3. import java.awt.Dimension;  
  4. import java.awt.FlowLayout;  
  5. import java.awt.Insets;  
  6. import java.awt.event.ActionEvent;  
  7. import java.awt.event.ActionListener;  
  8. import java.awt.event.ComponentAdapter;  
  9. import java.awt.event.ComponentEvent;  
  10. import java.beans.PropertyVetoException;  
  11.  
  12. import javax.swing.JButton;  
  13. import javax.swing.JDesktopPane;  
  14. import javax.swing.JFrame;  
  15. import javax.swing.JInternalFrame;  
  16. import javax.swing.JMenuBar;  
  17. import javax.swing.JMenuItem;  
  18. import javax.swing.JPanel;  
  19. import javax.swing.SwingUtilities;  
  20. import javax.swing.plaf.basic.BasicInternalFrameUI;  
  21.  
  22. /**  
  23. * MDIFrame is a frame using JInternalFrame to implements MDI as Word on Windows.  
  24. *   
  25. * @author Cheng  
  26. * @version 1.0.0 for GPF MDI test  
  27. */  
  28. @SuppressWarnings("serial")  
  29. public class MDIFrame extends JFrame {  
  30.    
  31.     /** The desktop pane. */  
  32.     final JDesktopPane desktopPane = new JDesktopPane();  
  33.    
  34.     /** The operation pane with restore and close buttons. */  
  35.     final JPanel opPane = new JPanel();  
  36.    
  37.     /**  
  38.      * Instantiates a new mDI frame.  
  39.      */  
  40.     public MDIFrame(){  
  41.       setTitle("MDI Frame");  
  42.       setSize(600, 550);  
  43.       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  44.     
  45.       final JMenuBar bar = new JMenuBar();  
  46.       JMenuItem exit = new JMenuItem("Exit");  
  47.           exit.addActionListener(new ActionListener(){  
  48.  
  49.               @Override  
  50.               public void actionPerformed(ActionEvent e) {  
  51.                    System.exit(0);  
  52.               }  
  53.      
  54.       });  
  55.       bar.add(exit);  
  56.       // operation pane with two button, set invisible at first  
  57.       opPane.setLayout(new FlowLayout(FlowLayout.TRAILING));  
  58.       JButton restore = new JButton("#");  
  59.       restore.setMargin(new Insets(0, 0, 0, 0));  
  60.       restore.setPreferredSize(new Dimension(15, 15));  
  61.       restore.addActionListener(new ActionListener(){  
  62.  
  63.       @Override  
  64.       public void actionPerformed(ActionEvent e) {  
  65.             InnerFrame i = (InnerFrame)desktopPane.getSelectedFrame();  
  66.             try {  
  67.                 // notice this method, when JInternalFrame set maximun false  
  68.                 // this internal frame will be set as old size  
  69.                 i.setMaximum(false);  
  70.             } catch (PropertyVetoException ex) {  
  71.                 ex.printStackTrace();  
  72.             }  
  73.             i.showNorthPanel();  
  74.             opPane.setVisible(false);  
  75.           }  
  76.      
  77.       });  
  78.       opPane.add(restore);  
  79.       JButton close = new JButton("X");  
  80.       close.setMargin(new Insets(0, 0, 0, 0));  
  81.       close.setPreferredSize(new Dimension(15, 15));  
  82.       close.addActionListener(new ActionListener(){  
  83.  
  84.           @Override  
  85.           public void actionPerformed(ActionEvent e) {  
  86.             JInternalFrame i = desktopPane.getSelectedFrame();  
  87.             i.dispose();  
  88.             opPane.setVisible(false);  
  89.           }  
  90.      
  91.       });  
  92.       opPane.add(close);  
  93.       bar.add(opPane);  
  94.       opPane.setVisible(false);  
  95.       setJMenuBar(bar);  
  96.     
  97.       Container content = getContentPane();  
  98.       content.add(desktopPane, BorderLayout.CENTER);  
  99.       final JPanel ctrlPane = new JPanel();  
  100.       JButton add = new JButton("add");  
  101.       add.addActionListener(new ActionListener(){  
  102.  
  103.           @Override  
  104.           public void actionPerformed(ActionEvent e) {  
  105.               InnerFrame iFrame = new InnerFrame();  
  106.               iFrame.setVisible(true);  
  107.               desktopPane.add(iFrame);  
  108.           }  
  109.      
  110.       });  
  111.       ctrlPane.add(add);  
  112.       content.add(ctrlPane, BorderLayout.SOUTH);  
  113.       setVisible(true);  
  114.     }  
  115.    
  116.     /**  
  117.      * The Class InnerFrame.  
  118.      */  
  119.     class InnerFrame extends JInternalFrame {  
  120.     
  121.       /** The is hidden. */  
  122.       boolean isHidden = false;  
  123.     
  124.       /** The old ui. */  
  125.       BasicInternalFrameUI oldUi = null;  
  126.     
  127.       /**  
  128.        * Instantiates a new inner frame.  
  129.        */  
  130.       public InnerFrame() {  
  131.           oldUi = (BasicInternalFrameUI)getUI();  
  132.           setSize(200, 200);  
  133.           maximizable = true;  
  134.           closable = true;  
  135.           addComponentListener(new ComponentAdapter() {  
  136.               public void componentResized(ComponentEvent e) {  
  137.                   InnerFrame selectedFrame = (InnerFrame)e.getSource();  
  138.                   if(selectedFrame.isMaximum()){  
  139.                       selectedFrame.hideNorthPanel();  
  140.                       opPane.setVisible(true);  
  141.                       try {  
  142.                            selectedFrame.setMaximum(true);  
  143.                       } catch (PropertyVetoException ex) {  
  144.                            ex.printStackTrace();  
  145.                        }  
  146.                    }  
  147.                }  
  148.           });  
  149.       }  
  150.     
  151.       /**  
  152.        * Hide north panel.  
  153.        */  
  154.       public void hideNorthPanel(){  
  155.           ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);  
  156.           this.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);  
  157.           isHidden = true;  
  158.       }  
  159.     
  160.       /**  
  161.        * Show north panel.  
  162.        */  
  163.       public void showNorthPanel() {  
  164.           this.setUI(oldUi);  
  165.           this.putClientProperty("JInternalFrame.isPalette", Boolean.FALSE);  
  166.           isHidden = false;  
  167.       }  
  168.     
  169.       /* (non-Javadoc)  
  170.        * @see javax.swing.JInternalFrame#updateUI()  
  171.        */  
  172.       public void updateUI() {  
  173.           super.updateUI();  
  174.           if (isHidden) {  
  175.               hideNorthPanel();  
  176.           }  
  177.        }  
  178.     }  
  179.    
  180.     /**  
  181.      * The main method.  
  182.      *   
  183.      * @param args the arguments  
  184.      */  
  185.     public static void main(String[] args) {  
  186.           SwingUtilities.invokeLater(new Runnable(){  
  187.  
  188.               @Override  
  189.               public void run() {  
  190.                    new MDIFrame();  
  191.               }  
  192.      
  193.           });  
  194.      }  
  195. }  

以上是Swing實現(xiàn)MDI的方法,希望大家有用。

【編輯推薦】

  1. 淺談不論是AWT還是Swing模式
  2. 全面比較Swing與SWT
  3. Swing程序中調(diào)用JavaFX代碼
  4. 概述Swing大多數(shù)控件
  5. 淺談Swing中的Look&Feel
責任編輯:佚名 來源: 電子工業(yè)出版社
相關推薦

2009-07-17 16:41:48

actionPerfoSwing

2009-07-17 11:30:44

Swing Image

2009-07-15 11:02:32

Swing組件

2009-07-10 10:37:50

Swing Set示例

2009-07-16 09:54:44

LookupEventSwing線程

2009-07-15 16:03:26

Swing線程

2009-07-15 16:50:07

Swing項目

2009-07-16 17:01:09

Swing字符串

2009-07-10 14:20:01

AcceleratorJava Swing

2009-07-15 13:46:26

Swing體系結構

2009-09-07 09:36:29

C# DisposeDispose方法

2009-09-28 10:35:45

Silverlight

2009-09-17 08:47:00

Linq插入數(shù)據(jù)

2009-07-14 14:00:47

iData技術

2012-01-17 17:21:24

JavaSwing

2009-07-15 17:33:08

Swing客戶端

2009-07-10 17:24:07

Swing應用程序

2009-07-14 15:12:36

SwingSWT和AWT

2009-10-12 10:33:11

Javascript替

2009-12-23 09:04:41

LINQ通用分頁
點贊
收藏

51CTO技術棧公眾號

性欧美又大又长又硬| 亚洲欧美综合图区| 色999国产精品| 黄色小网站在线观看| 国产美女主播在线播放| 国产精品久久久久久影视| 日韩一区二区三区四区| 国产日韩精品一区二区三区 | 狠狠色狠狠色综合系列| 在线观看视频一区二区三区| 麻豆电影在线播放| 成人av小说网| 粉嫩一区二区三区性色av| 一区二区三区高清在线观看| 日本不卡在线| 亚洲精品一区二区| 老熟妇仑乱视频一区二区| 欧美不卡1区2区3区| 91国语精品自产拍在线观看性色| 亚洲国产精品久久久久久| 亚洲精品99| 成人高潮成人免费观看| 国产小黄视频| 久青草视频在线播放| 蜜桃视频在线观看成人| 91精品国产综合久久香蕉最新版| 免费97视频在线精品国自产拍| 精品久久久久久久人人人人传媒| 欧美午夜精品久久久久久浪潮 | 午夜久久电影网| 中文字幕人成不卡一区| 欧美韩国日本不卡| 久久精品无码一区二区三区| 97se亚洲国产综合自在线不卡| 久久99精品久久只有精品| 日韩国产在线观看一区| 久久中文在线| 激情欧美日韩一区二区| 日本欧美色综合网站免费| 国内一区二区在线视频观看| 亚洲bt欧美bt日本bt| 97免费资源站| 精品一区二区不卡| 欧美影视一区二区| 欧洲亚洲一区| 草草草视频在线观看| 日韩精品一区二区在线视频| 91九色丨porny丨国产jk| 久久一区二区精品| 免费日韩av电影| 4444在线观看| 欧美成人xxxxx| 成人综合av| 视频免费在线看| 888av在线| 欧美与亚洲与日本直播| 免费高清视频在线一区| 96视频在线观看欧美| 国产99久久精品一区二区300| 婷婷亚洲综合| 蜜臀久久久久久久| 国产欧美一区二区三区鸳鸯浴| 中文字幕亚洲在| 亚洲精品护士| 成人av电影在线播放| 亚洲精品欧美在线| 日韩精品中午字幕| 国模精品视频一区二区三区| 亚洲影院污污.| 91精品国产综合久久蜜臀| 亚洲一区在线视频| 亚洲成人亚洲激情| 国产精品999999| 手机成人在线| 高清成人av| 最新国产在线拍揄自揄视频| 超碰国产精品一区二页| 最新国产乱人伦偷精品免费网站| 成人av电影免费在线播放| 亚洲品质自拍视频| 国产视频久久久久久久| 国产成人精品久久二区二区91| 五月天久久狠狠| 日本人妖在线| 2023国产精华国产精品| 亚洲国产影院| 一区二区三区四区av| 在线观看久久久久久| 国产在线视频不卡| 国产成人精品视频ⅴa片软件竹菊| 免费人成黄页在线观看忧物| 朝桐光一区二区| 另类亚洲自拍| 一本色道久久加勒比精品| 亚洲人成网站在线| 久热精品视频在线免费观看| 欧洲一区二区在线| av在线1区2区| 在线电影一区二区| 亚洲综合男人的天堂| 久久精品国产91精品亚洲 | 国产xxxxx视频| 视频一区二区三区不卡| 久久中文字幕av| 亚洲免费观看在线观看| 久久国产精品久久久久久| 色乱码一区二区三区熟女| 欧美极品视频| 日韩精品亚洲专区| 欧美疯狂性受xxxxx喷水图片| 成人av电影天堂| 又黄又www| 香蕉久久精品日日躁夜夜躁| 国产亚洲一区字幕| 欧美精品福利在线| 国产主播在线看| 欧美经典一区| 亚洲影院在线观看| 99re在线视频上| 欧美人与性动交α欧美精品图片| 日韩精品国产精品| 国产亚洲欧美日韩美女| av无码久久久久久不卡网站| 国产一区再线| 黄色精品在线观看| 成人手机电影网| 欧美黑人狂野猛交老妇| 青青免费在线视频| 日本伊人午夜精品| 最近2019中文字幕mv免费看| 99视频在线视频| 2023国产精品久久久精品双| 欧美成人猛片aaaaaaa| 国产福利一区视频| 好看的日韩av电影| 亚洲国产欧美日韩精品| 性猛交ⅹ×××乱大交| 欧美激情aⅴ一区二区三区| 欧美成人性战久久| 免费女人黄页| 蜜臀av性久久久久蜜臀av麻豆| 欧美成人第一页| wwwxxx在线观看| 久久久五月婷婷| 999视频在线观看| 高清不卡一区| 亚洲成色777777在线观看影院| 手机看片一级片| 国产精品一区二区三区乱码| 国产在线播放91| 亚洲欧美日本国产| 亚洲va中文在线播放免费| 天天综合色天天| 日本www高清视频| 秋霞av亚洲一区二区三| 久久久在线观看| 91丝袜在线| 欧美在线高清视频| 曰韩少妇与小伙激情| 午夜电影一区| 中日韩美女免费视频网站在线观看| 蜜桃视频在线观看视频| 国产精品毛片高清在线完整版 | 久久国产手机看片| 偷拍视屏一区| 久久99久久99精品免观看粉嫩| 直接在线观看的三级网址| 午夜视频久久久久久| 五月婷婷六月合| 久久久久国产精品人| 穿情趣内衣被c到高潮视频| 久久久久久9| 亚洲最大福利视频网站| 四虎成人av| 国产精品久久久久99| 久久香蕉网站| 66m—66摸成人免费视频| 视频精品国内| 欧美极品少妇xxxxⅹ免费视频| 日韩午夜电影免费看| www国产91| 亚洲精品9999| 精品大片一区二区| 清纯唯美日韩制服另类| 亚洲精品a区| 欧美激情一级精品国产| 经典三级久久| 日韩美女视频免费在线观看| 欧美hentaied在线观看| 国产精品theporn88| 国产欧美精品久久| 精品视频一区在线| 国产最新精品精品你懂的| 日本精品免费视频| 欧美高清在线精品一区| 91福利电影| 欧美日韩国产综合一区二区| 爱情电影社保片一区| 欧美成年人视频| 激情五月***国产精品|