⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 folder.java

📁 SWING的界面UI包 SWING的界面UI包
💻 JAVA
字号:
/*
 * Folder.java
 *
 * Created on June 8, 2007, 5:30 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package dyno.swing.beans;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;

import javax.swing.JComponent;


/**
 * 该类是个辅助类,实现折叠面板的一个逻辑面板,包括面板caption和内容。
 *
 * @author William Chen
 */
class Folder extends JComponent {
    //缺省caption的高度
    private static final int CAPTION_HEIGHT = 25;

    //标题组件
    private CaptionButton caption;

    //放应用程序的抽屉
    private Drawer drawer;

    /**
     * Creates a new instance of Folder
     */
    Folder(String label, JComponent comp) {
        this(label, true, comp);
    }

    /**
     * @param label 面板标题文字
     * @param expanded 面板是否展开
     * @param comp 应用程序组件
     */
    Folder(String label, boolean expanded, JComponent comp) {
        //设置自己的layout
        setLayout(new FolderTabLayout());
        //生成并添加标题组件
        caption = new CaptionButton(label, expanded);
        add(caption);
        //生成并添加抽屉
        drawer = new Drawer(expanded ? 1 : 0, comp);
        add(drawer);
    }
    CaptionButton getCaption() {
        return caption;
    }

    Drawer getDrawer() {
        return drawer;
    }

    //获得该面板目前所需的空间大小:drawer+caption_height
    Dimension getRequiredDimension() {
        int w = drawer.getContentWidth();

        //高度是抽屉的高度加上标题的高度,抽屉的高度是目前抽出的长度        
        int h = (int) (drawer.getContentHeight() * drawer.getRatio()) +
            CAPTION_HEIGHT;

        return new Dimension(w, h);
    }

    /**
     * 负责布局面板组件
     */
    class FolderTabLayout implements LayoutManager {
        public void addLayoutComponent(String name, Component comp) {
        }

        public void removeLayoutComponent(Component comp) {
        }

        public Dimension preferredLayoutSize(Container parent) {
            return parent.getPreferredSize();
        }

        public Dimension minimumLayoutSize(Container parent) {
            return parent.getMinimumSize();
        }

        public void layoutContainer(Container parent) {
            int w = parent.getWidth();
            int h = parent.getHeight();
            //标题栏总是固定高度
            caption.setBounds(0, 0, w, CAPTION_HEIGHT);
            //抽屉只显示抽出的比例
            drawer.setBounds(0, CAPTION_HEIGHT, w, h - CAPTION_HEIGHT);
            drawer.setContentWidth(w);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -