<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    沙漠中的魚

    欲上天堂,先下地獄
    posts - 0, comments - 56, trackbacks - 0, articles - 119
      BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

    在JavaMDI窗口中加入滾動(dòng)條

    Posted on 2008-09-07 01:14 沙漠中的魚 閱讀(309) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    Java設(shè)計(jì)MDI窗口,要用到JDesktopPane類和JInternalFrame類,其應(yīng)用可以看jdk自帶的metaworks的例子。但用它實(shí)現(xiàn)的MDI窗口在子窗口移出父窗口時(shí),沒有滾動(dòng)條,為此必借助于JScrollPane才行,如下:

            JDesktopPane desktop = new JDesktopPane ();
    .
            JScrollPane scrollpane = new JScrollPane(desktop,
                    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            getContentPane().add(scrollpane);

    但是一運(yùn)行,但內(nèi)部窗口移出到邊界外邊時(shí),我們預(yù)想中的滾動(dòng)條并沒有出現(xiàn),怎么辦?原來,JDesktopPane 加到JScrollPane后其大小就只是JScrollPane的viewport的大小,所以滾動(dòng)條并沒有出現(xiàn)。所以我們要想辦法讓JDesktopPane 的Viewport的大小跟隨內(nèi)部窗口的位置而改變大小,繼承一個(gè)JDesktopPane 吧:

    /**
     * @author Turbo Chen
     * @version 1.01
     */
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;

    public class JDesktop extends JDesktopPane{
        public void paint(Graphics g){
            super.paint(g);
            Dimension d = preferredSizeOfAllFrames();
            this.setPreferredSize(d);
            this.revalidate();
        }

      /**
       * @return 返回最佳desktop尺寸..
       */
        public Dimension preferredSizeOfAllFrames(){
            JInternalFrame [] array = getAllFrames();
            int maxX = 0;
            int maxY = 0;
            for (int i = 0; i < array.length; i++){
                if ( array[ i ].isVisible() ){
                    int cx;
                    cx = array[i].getX();
                    int x = cx + array[i].getWidth();
                    if (x > maxX) maxX = x;
                    int cy;
                    cy = array[i].getY();
                    int y = cy + array[i].getHeight();
                    if (y > maxY) maxY = y;
                }
            }
            return new Dimension(maxX, maxY);
        }
    }
    關(guān)鍵是preferredSizeOfAllFrames()方法,子窗口移動(dòng)時(shí)造成JDesktop的刷新,它調(diào)用preferredSizeOfAllFrames()方法重新計(jì)算最佳JDesktop的大小,并通過revalidate()方法來通知它的上層容器即JScrollPane,JScrollPane會(huì)根據(jù)JDesktop的大小來調(diào)整自身Viewport的大小,當(dāng)Viewport的大小超出可視范圍,JScrollPane就出現(xiàn)滾動(dòng)條了.

    在你的程序中,只要用這個(gè)新的JDesktop類,就可以在MDI窗口中實(shí)現(xiàn)滾動(dòng)條了

     

    主站蜘蛛池模板: 国产小视频免费观看| 伊人久久大香线蕉亚洲| 国产午夜亚洲精品不卡电影| 亚洲色偷偷综合亚洲AV伊人| 久久狠狠躁免费观看| ww亚洲ww在线观看国产| 夜色阁亚洲一区二区三区| 日韩免费电影网站| 色偷偷尼玛图亚洲综合| 精品久久香蕉国产线看观看亚洲| 69堂人成无码免费视频果冻传媒 | 亚洲精品成人网站在线观看 | 国产成人高清亚洲| 在线观看H网址免费入口| 黄页网址大全免费观看12网站| 亚洲国产综合专区在线电影 | 亚洲综合色自拍一区| 免费福利网站在线观看| 中国在线观看免费的www| 亚洲综合一区无码精品| 亚洲va中文字幕无码久久不卡| 麻豆精品国产免费观看| 99re在线这里只有精品免费| 免费人成网站永久| 亚洲一区二区观看播放| 麻豆亚洲AV永久无码精品久久| 亚洲国产电影av在线网址| 最近免费中文字幕4| 日本免费大黄在线观看| 无遮挡免费一区二区三区| 亚洲中文字幕AV在天堂| 久久精品国产亚洲av影院| 亚洲婷婷国产精品电影人久久| 性盈盈影院免费视频观看在线一区| 永久免费av无码网站yy| 五级黄18以上免费看| 亚洲AV噜噜一区二区三区| 亚洲人成高清在线播放| 久久久久亚洲精品无码蜜桃| 日韩亚洲人成在线综合日本| 亚洲综合色成在线播放|