javax.swing.JRootPane#getWindowDecorationStyle ( )源码实例Demo

下面列出了javax.swing.JRootPane#getWindowDecorationStyle ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: littleluck   文件: LuckRootPaneUI.java
/**
 * <p>给根窗格安装边框</p>
 * 
 * <p>To install JRootPane border</p>
 *
 * @param root <code>JRootPane</code>
 */
protected void installBorder(JRootPane root)
{
    int style = root.getWindowDecorationStyle();

    // 这句必须,否则会出现无法安装边框的情况
    // Sentence must, otherwise there will not be installed border situation
    root.setBorder(null);
    
    //
    if(LuckPlatformUtils.isWindows())
    {
    	root.setBorder(UIManager.getBorder(borderKeys[style]));
    }
    else
    {
    	root.setBorder(LineBorder.createBlackLineBorder());
    }
}
 
源代码2 项目: beautyeye   文件: BERootPaneUI.java
/**
 * Uninstalls any state that <code>installClientDecorations</code> has
 * installed.
 * <p>
 * NOTE: This may be called if you haven't installed client decorations
 * yet (ie before <code>installClientDecorations</code> has been invoked).
 *
 * @param root the root
 */
private void uninstallClientDecorations(JRootPane root) 
{
	uninstallBorder(root);
	uninstallWindowListeners(root);
	setTitlePane(root, null);
	uninstallLayout(root);
	// We have to revalidate/repaint root if the style is JRootPane.NONE
	// only. When we needs to call revalidate/repaint with other styles
	// the installClientDecorations is always called after this method
	// imediatly and it will cause the revalidate/repaint at the proper
	// time.
	int style = root.getWindowDecorationStyle();
	if (style == JRootPane.NONE) 
	{
		root.repaint();
		root.revalidate();
	}
	// Reset the cursor, as we may have changed it to a resize cursor
	if (window != null) 
	{
		window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
	}
	window = null;
}
 
源代码3 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Uninstalls any state that <code>installClientDecorations</code> has
 * installed.
 *
 * <p>NOTE: This may be called if you haven't installed client decorations
 * yet (ie before <code>installClientDecorations</code> has been invoked).
 * </p>
 *
 * @param root the JRootPane.
 */
private void uninstallClientDecorations(JRootPane root) {
    uninstallBorder(root);
    uninstallWindowListeners(root);
    setTitlePane(root, null);
    uninstallLayout(root);
    // We have to revalidate/repaint root if the style is JRootPane.NONE
    // only. When we needs to call revalidate/repaint with other styles
    // the installClientDecorations is always called after this method
    // imediatly and it will cause the revalidate/repaint at the proper
    // time.
    int style = root.getWindowDecorationStyle();

    if (style == JRootPane.NONE) {
        root.repaint();
        root.revalidate();
    }
    // Reset the cursor, as we may have changed it to a resize cursor
    if (window != null) {
        window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }

    window = null;
}
 
源代码4 项目: littleluck   文件: LuckRootPaneLayout.java
public Dimension preferredLayoutSize(Container parent)
 {
     Insets insets = parent.getInsets();

     JRootPane root = (JRootPane) parent;

     int h = 0;

     Dimension cpd = null;

     if (root.getContentPane() != null)
     {
         cpd = root.getContentPane().getPreferredSize();

if (!(root.getContentPane() instanceof LuckBackgroundPanel)
        && root.getWindowDecorationStyle() != JRootPane.NONE)
{
	h += UIManager.getInt(LuckRootPaneUIBundle.TITLEPANEL_HEIGHT);
}
     }
     else
     {
         cpd = root.getSize();
     }

     h += cpd.height;

     return getDimension(insets, cpd.width, h);
 }
 
源代码5 项目: littleluck   文件: LuckRootPaneUI.java
@Override
public void installUI(JComponent c)
{
    super.installUI(c);

    JRootPane root = (JRootPane) c;

    int style = root.getWindowDecorationStyle();

    if (style != JRootPane.NONE)
    {
        installClientDecorations(root);
    }
}
 
源代码6 项目: littleluck   文件: LuckRootPaneUI.java
protected void uninstallOther(JRootPane root)
{
    Container content = root.getContentPane();

    if (content != null && content instanceof LuckBackgroundPanel)
    {
        LuckBackgroundPanel bgPanel = (LuckBackgroundPanel) content;

        root.setContentPane(bgPanel.getContentPane());

        root.setJMenuBar(bgPanel.getJMenuBar());

        bgPanel.uninstallMenubar(true);
    }

    int style = root.getWindowDecorationStyle();

    if (style == JRootPane.NONE)
    {
        root.repaint();

        root.revalidate();
    }

    Window window = SwingUtilities.getWindowAncestor(root);

    if (window != null)
    {
        window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
}
 
源代码7 项目: beautyeye   文件: BERootPaneUI.java
/**
 * Invoked when a property changes. <code>MetalRootPaneUI</code> is
 * primarily interested in events originating from the
 * <code>JRootPane</code> it has been installed on identifying the
 * property <code>windowDecorationStyle</code>. If the 
 * <code>windowDecorationStyle</code> has changed to a value other
 * than <code>JRootPane.NONE</code>, this will add a <code>Component</code>
 * to the <code>JRootPane</code> to render the window decorations, as well
 * as installing a <code>Border</code> on the <code>JRootPane</code>.
 * On the other hand, if the <code>windowDecorationStyle</code> has
 * changed to <code>JRootPane.NONE</code>, this will remove the
 * <code>Component</code> that has been added to the <code>JRootPane</code>
 * as well resetting the Border to what it was before
 * <code>installUI</code> was invoked.
 *
 * @param e A PropertyChangeEvent object describing the event source 
 *          and the property that has changed.
 */
public void propertyChange(PropertyChangeEvent e) 
{
	super.propertyChange(e);

	String propertyName = e.getPropertyName();
	if(propertyName == null) 
	{
		return;
	}

	if(propertyName.equals("windowDecorationStyle")) 
	{
		JRootPane root = (JRootPane) e.getSource();
		int style = root.getWindowDecorationStyle();

		// This is potentially more than needs to be done,
		// but it rarely happens and makes the install/uninstall process
		// simpler. MetalTitlePane also assumes it will be recreated if
		// the decoration style changes.
		
		uninstallClientDecorations(root);
		if (style != JRootPane.NONE) 
		{
			installClientDecorations(root);
		}
	}
	else if (propertyName.equals("ancestor")) 
	{
		uninstallWindowListeners(root);
		if (((JRootPane)e.getSource()).getWindowDecorationStyle() !=
			JRootPane.NONE) 
		{
			installWindowListeners(root, root.getParent());
		}
	}
	return;
}
 
源代码8 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Invokes supers implementation of <code>installUI</code> to install the
 * necessary state onto the passed in <code>JRootPane</code> to render the
 * metal look and feel implementation of <code>RootPaneUI</code>. If the
 * <code>windowDecorationStyle</code> property of the <code>JRootPane</code>
 * is other than <code>JRootPane.NONE</code>, this will add a custom <code>
 * Component</code> to render the widgets to <code>JRootPane</code>, as well
 * as installing a custom <code>Border</code> and <code>LayoutManager</code>
 * on the <code>JRootPane</code>.
 *
 * @param c the JRootPane to install state onto.
 */
public void installUI(JComponent c) {
    super.installUI(c);

    root = (JRootPane) c;

    updateTextured();

    int       style  = root.getWindowDecorationStyle();
    Container parent = root.getParent();

    if (parent != null && (parent instanceof JFrame || parent instanceof JDialog) && style != JRootPane.NONE) {
        installClientDecorations(root);
    }
}
 
源代码9 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Installs the appropriate <code>Border</code> onto the <code>
 * JRootPane</code>.
 *
 * @param root the root pane.
 */
public void installBorder(JRootPane root) {
    int style = root.getWindowDecorationStyle();

    if (style == JRootPane.NONE) {
        LookAndFeel.uninstallBorder(root);
    } else {
        root.setBorder(new SeaGlassBorder(this, new Insets(0, 1, 1, 1)));
    }
}
 
源代码10 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Returns the amount of space the layout would like to have.
 *
 * @param  parent the Container for which this layout manager is being
 *                used
 *
 * @return a Dimension object containing the layout's preferred size
 */
public Dimension preferredLayoutSize(Container parent) {
    Dimension cpd;
    Dimension mbd;
    Dimension tpd;
    int       cpWidth  = 0;
    int       cpHeight = 0;
    int       mbWidth  = 0;
    int       mbHeight = 0;
    int       tpWidth  = 0;
    int       tpHeight = 0;
    Insets    i        = parent.getInsets();
    JRootPane root     = (JRootPane) parent;

    if (root.getContentPane() != null) {
        cpd = root.getContentPane().getPreferredSize();
    } else {
        cpd = root.getSize();
    }

    if (cpd != null) {
        cpWidth  = cpd.width;
        cpHeight = cpd.height;
    }

    if (root.getJMenuBar() != null) {
        mbd = root.getJMenuBar().getPreferredSize();
        if (mbd != null) {
            mbWidth  = mbd.width;
            mbHeight = mbd.height;
        }
    }

    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            tpd = titlePane.getPreferredSize();
            if (tpd != null) {
                tpWidth  = tpd.width;
                tpHeight = tpd.height;
            }
        }
    }

    return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right,
                         cpHeight + mbHeight + tpHeight + i.top + i.bottom);
}
 
源代码11 项目: littleluck   文件: WindowMouseHandler.java
/**
 * 处理JFrame的双击标题面板缩放事件
 */
public void mouseClicked(MouseEvent e)
{
    Window window = (Window) e.getSource();

    if(window instanceof JFrame)
    {
        JFrame frame = (JFrame) window;

        JRootPane root = frame.getRootPane();

        // 不包含窗体装饰直接返回
        if (root.getWindowDecorationStyle() == JRootPane.NONE)
        {
            return;
        }

        // 不在标题栏覆盖区域直接返回
        if(!titleArea.contains(e.getPoint()))
        {
            return;
        }

        if ((e.getClickCount() % 2) == 0 && ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0))
        {
            int state = frame.getExtendedState();

            if (frame.isResizable())
            {
                if ((state & JFrame.MAXIMIZED_BOTH) != 0)
                {
                    frame.setExtendedState(state & ~JFrame.MAXIMIZED_BOTH);
                }
                else
                {
                    frame.setExtendedState(state | JFrame.MAXIMIZED_BOTH);
                }
            }
        }
    }
}
 
源代码12 项目: littleluck   文件: WindowMouseHandler.java
/**
 *  v1.0.1:修复自定义拖拽区域BUG, 增加边界判断
 */
public void mousePressed(MouseEvent e)
{
    Window window = (Window) e.getSource();

    JRootPane root = LuckWindowUtil.getRootPane(window);

    // 不包含窗体装饰直接返回
    if (root == null || root.getWindowDecorationStyle() == JRootPane.NONE)
    {
        return;
    }
    
    if (window != null)
    {
        window.toFront();
    }

    // 如果是单击标题栏, 则标记接下来的拖动事件为移动窗口, 判断当前鼠标是否超出边界
    if (dragArea.contains(e.getPoint())
            && dragCursor == Cursor.DEFAULT_CURSOR)
    {
        if(window instanceof JFrame)
        {
            JFrame frame = (JFrame)window;

            // 如果当前窗体是全屏状态则直接返回
            if(frame.getExtendedState() == JFrame.MAXIMIZED_BOTH)
            {
                return;
            }
        }

        // 设置为可以移动并记录当前坐标
        isMovingWindow = true;

        dragOffsetX = e.getPoint().x;

        dragOffsetY = e.getPoint().y;
    }
    else if(LuckWindowUtil.isResizable(window))
    {
        dragOffsetX = e.getPoint().x;

        dragOffsetY = e.getPoint().y;

        dragWidth = window.getWidth();

        dragHeight = window.getHeight();

        JRootPane rootPane = LuckWindowUtil.getRootPane(window);

        if(rootPane != null && LuckWindowUtil.isResizable(window))
        {
            dragCursor = getCursor(dragWidth, dragHeight, e.getPoint(), rootPane.getInsets());
        }
    }
}
 
源代码13 项目: littleluck   文件: LuckRootPaneLayout.java
public void layoutContainer(Container parent)
{
    JRootPane root = (JRootPane) parent;
    Rectangle bound = root.getBounds();
    Insets inset = root.getInsets();

    // 获取内容面板实际宽度, 减去左右边框面积
    // Calculate the actual width
    int w = bound.width - inset.right - inset.left;

    // 获取内容面板实际高度, 减去上下边框面积
    int h = bound.height - inset.top - inset.bottom;

    // 设置层级面板在根窗格中的位置
    // Calculate the actual height
    if(root.getLayeredPane() != null)
    {
        root.getLayeredPane().setBounds(inset.left, inset.top, w, h);
    }

    // 布局玻璃窗格
    // layout LayeredPane
    if(root.getGlassPane() != null)
    {
        root.getGlassPane().setBounds(inset.left, inset.top, w, h);
    }

    // 获取当前内容面板
    // get current ContentPane
    Container content = root.getContentPane();

    LuckRootPaneUI rootPaneUI = (LuckRootPaneUI) root.getUI();

    // 使用 <code>LuckBackgroundPanel</code>替换当前的内容面板
    // Use <code>LuckBackgroundPanel</code> replace the current contents of the panel
    if(!(content instanceof LuckBackgroundPanel))
    {
        Window window = SwingUtilities.getWindowAncestor(root);

       	boolean isResizeableOnInit = LuckWindowUtil.isResizable(window);

    	int initStyle = root.getWindowDecorationStyle();

        if(initStyle != JRootPane.NONE)
        {
            //
            LuckTitlePanel titlePanel = rootPaneUI.createTitlePanel(initStyle, isResizeableOnInit);

            LuckBackgroundPanel background = rootPaneUI.createContentPane(titlePanel, content);

            root.setContentPane(background);
        }
    }

    root.getContentPane().setBounds(0, 0, w, h);
}
 
源代码14 项目: littleluck   文件: LuckRootPaneUI.java
public void propertyChange(PropertyChangeEvent e)
{
    super.propertyChange(e);

    String propertyName = e.getPropertyName();

    if (propertyName == null)
    {
        return;
    }

    JRootPane root = (JRootPane) e.getSource();

    Container parent = root.getParent();

    if (!(parent instanceof Window))
    {
        return;
    }

    if (WINDOWDECORATIONSTYLE_EVENT.equals(propertyName))
    {
        int style = root.getWindowDecorationStyle();

        uninstallClientDecorations(root);

        if (style != JRootPane.NONE)
        {
            installClientDecorations(root);
        }
    }
    else if (ANCESTOR_EVENT.equals(propertyName))
    {
        uninstallWindowListener(root);

        if (((JRootPane) e.getSource()).getWindowDecorationStyle() != JRootPane.NONE)
        {
            installWindowListeners(root);
        }
    }
}
 
源代码15 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Instructs the layout manager to perform the layout for the specified
 * container.
 *
 * @param parent the Container for which this layout manager is being
 *               used
 */
public void layoutContainer(Container parent) {
    JRootPane root  = (JRootPane) parent;
    Rectangle b     = root.getBounds();
    Insets    i     = root.getInsets();
    int       nextY = 0;
    int       w     = b.width - i.right - i.left;
    int       h     = b.height - i.top - i.bottom;

    if (root.getLayeredPane() != null) {
        root.getLayeredPane().setBounds(i.left, i.top, w, h);
    }

    if (root.getGlassPane() != null) {
        root.getGlassPane().setBounds(i.left, i.top, w, h);
    }
    // Note: This is laying out the children in the layeredPane,
    // technically, these are not our children.
    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            Dimension tpd = titlePane.getPreferredSize();

            if (tpd != null) {
                int tpHeight = tpd.height;

                titlePane.setBounds(0, 0, w, tpHeight);
                nextY += tpHeight;
            }
        }
    }

    if (root.getJMenuBar() != null) {
        boolean   menuInTitle = (root.getClientProperty("JRootPane.MenuInTitle") == Boolean.TRUE);
        Dimension mbd         = root.getJMenuBar().getPreferredSize();
        int x = menuInTitle? 20 : 0;
        root.getJMenuBar().setBounds(x, menuInTitle ? 0 : nextY, w, mbd.height);
        root.getJMenuBar().setOpaque(false);
        root.getJMenuBar().setBackground(transparentColor);
        if (!menuInTitle) {
            nextY += mbd.height;
        }
    }

    if (root.getContentPane() != null) {
        /* Dimension cpd = */ root.getContentPane().getPreferredSize();
        root.getContentPane().setBounds(0, nextY, w, h < nextY ? 0 : h - nextY);
    }
}
 
源代码16 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Returns the maximum amount of space the layout can use.
 *
 * @param  target the Container for which this layout manager is being
 *                used
 *
 * @return a Dimension object containing the layout's maximum size
 */
public Dimension maximumLayoutSize(Container target) {
    Dimension cpd;
    Dimension mbd;
    Dimension tpd;
    int       cpWidth  = Integer.MAX_VALUE;
    int       cpHeight = Integer.MAX_VALUE;
    int       mbWidth  = Integer.MAX_VALUE;
    int       mbHeight = Integer.MAX_VALUE;
    int       tpWidth  = Integer.MAX_VALUE;
    int       tpHeight = Integer.MAX_VALUE;
    Insets    i        = target.getInsets();
    JRootPane root     = (JRootPane) target;

    if (root.getContentPane() != null) {
        cpd = root.getContentPane().getMaximumSize();
        if (cpd != null) {
            cpWidth  = cpd.width;
            cpHeight = cpd.height;
        }
    }

    if (root.getJMenuBar() != null) {
        mbd = root.getJMenuBar().getMaximumSize();
        if (mbd != null) {
            mbWidth  = mbd.width;
            mbHeight = mbd.height;
        }
    }

    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            tpd = titlePane.getMaximumSize();
            if (tpd != null) {
                tpWidth  = tpd.width;
                tpHeight = tpd.height;
            }
        }
    }

    int maxHeight = Math.max(Math.max(cpHeight, mbHeight), tpHeight);
    // Only overflows if 3 real non-MAX_VALUE heights, sum to > MAX_VALUE
    // Only will happen if sums to more than 2 billion units. Not likely.
    if (maxHeight != Integer.MAX_VALUE) {
        maxHeight = cpHeight + mbHeight + tpHeight + i.top + i.bottom;
    }

    int maxWidth = Math.max(Math.max(cpWidth, mbWidth), tpWidth);
    // Similar overflow comment as above
    if (maxWidth != Integer.MAX_VALUE) {
        maxWidth += i.left + i.right;
    }

    return new Dimension(maxWidth, maxHeight);
}
 
源代码17 项目: beautyeye   文件: BERootPaneUI.java
/**
 * Returns the amount of space the layout would like to have.
 *
 * @param parent the parent
 * @return a Dimension object containing the layout's preferred size
 */ 
public Dimension preferredLayoutSize(Container parent) 
{
	Dimension cpd, mbd, tpd;
	int cpWidth = 0;
	int cpHeight = 0;
	int mbWidth = 0;
	int mbHeight = 0;
	int tpWidth = 0;
	int tpHeight = 0;
	Insets i = parent.getInsets();
	JRootPane root = (JRootPane) parent;

	if(root.getContentPane() != null) 
	{
		cpd = root.getContentPane().getPreferredSize();
	} 
	else 
	{
		cpd = root.getSize();
	}
	if (cpd != null) 
	{
		cpWidth = cpd.width;
		cpHeight = cpd.height;
	}

	if(root.getMenuBar() != null) 
	{
		mbd = root.getMenuBar().getPreferredSize();
		if (mbd != null)
		{
			mbWidth = mbd.width;
			mbHeight = mbd.height;
		}
	} 

	if (root.getWindowDecorationStyle() != JRootPane.NONE &&
			(root.getUI() instanceof BERootPaneUI)) 
	{
		JComponent titlePane = ((BERootPaneUI)root.getUI()).
		getTitlePane();
		if (titlePane != null) 
		{
			tpd = titlePane.getPreferredSize();
			if (tpd != null) 
			{
				tpWidth = tpd.width;
				tpHeight = tpd.height;
			}
		}
	}

	return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right, 
			cpHeight + mbHeight + tpWidth + i.top + i.bottom);
}
 
源代码18 项目: beautyeye   文件: BERootPaneUI.java
/**
 * Returns the minimum amount of space the layout needs.
 *
 * @param parent the parent
 * @return a Dimension object containing the layout's minimum size
 */ 
public Dimension minimumLayoutSize(Container parent) 
{
	Dimension cpd, mbd, tpd;
	int cpWidth = 0;
	int cpHeight = 0;
	int mbWidth = 0;
	int mbHeight = 0;
	int tpWidth = 0;
	int tpHeight = 0;
	Insets i = parent.getInsets();
	JRootPane root = (JRootPane) parent;

	if(root.getContentPane() != null) 
	{
		cpd = root.getContentPane().getMinimumSize();
	} 
	else 
	{
		cpd = root.getSize();
	}
	if (cpd != null) 
	{
		cpWidth = cpd.width;
		cpHeight = cpd.height;
	}

	if(root.getMenuBar() != null) 
	{
		mbd = root.getMenuBar().getMinimumSize();
		if (mbd != null) {
			mbWidth = mbd.width;
			mbHeight = mbd.height;
		}
	}            
	if (root.getWindowDecorationStyle() != JRootPane.NONE &&
			(root.getUI() instanceof BERootPaneUI)) {
		JComponent titlePane = ((BERootPaneUI)root.getUI()).
		getTitlePane();
		if (titlePane != null) 
		{
			tpd = titlePane.getMinimumSize();
			if (tpd != null) 
			{
				tpWidth = tpd.width;
				tpHeight = tpd.height;
			}
		}
	}

	return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right, 
			cpHeight + mbHeight + tpWidth + i.top + i.bottom);
}
 
源代码19 项目: seaglass   文件: SeaGlassRootPaneUI.java
/**
 * Returns the minimum amount of space the layout needs.
 *
 * @param  parent the Container for which this layout manager is being
 *                used
 *
 * @return a Dimension object containing the layout's minimum size
 */
public Dimension minimumLayoutSize(Container parent) {
    Dimension cpd;
    Dimension mbd;
    Dimension tpd;
    int       cpWidth  = 0;
    int       cpHeight = 0;
    int       mbWidth  = 0;
    int       mbHeight = 0;
    int       tpWidth  = 0;
    int       tpHeight = 0;
    Insets    i        = parent.getInsets();
    JRootPane root     = (JRootPane) parent;

    if (root.getContentPane() != null) {
        cpd = root.getContentPane().getMinimumSize();
    } else {
        cpd = root.getSize();
    }

    if (cpd != null) {
        cpWidth  = cpd.width;
        cpHeight = cpd.height;
    }

    if (root.getJMenuBar() != null) {
        mbd = root.getJMenuBar().getMinimumSize();
        if (mbd != null) {
            mbWidth  = mbd.width;
            mbHeight = mbd.height;
        }
    }

    if (root.getWindowDecorationStyle() != JRootPane.NONE && (root.getUI() instanceof SeaGlassRootPaneUI)) {
        JComponent titlePane = ((SeaGlassRootPaneUI) root.getUI()).getTitlePane();

        if (titlePane != null) {
            tpd = titlePane.getMinimumSize();
            if (tpd != null) {
                tpWidth  = tpd.width;
                tpHeight = tpd.height;
            }
        }
    }

    return new Dimension(Math.max(Math.max(cpWidth, mbWidth), tpWidth) + i.left + i.right,
                         cpHeight + mbHeight + tpHeight + i.top + i.bottom);
}
 
源代码20 项目: littleluck   文件: LuckMetalRootPaneUI.java
@Override
protected void installClientDecorations(JRootPane root)
{
    super.installClientDecorations(root);

    Window window = SwingUtilities.getWindowAncestor(root);

    boolean isResize = LuckWindowUtil.isResizable(window);

    int style = root.getWindowDecorationStyle();

    installTitlePane(root, createTitlePanel(style, isResize), window);
}