2011-12-15 34 views
1

我有一個主框架和一個連接的可摺疊面板,我從http://sourceforge.net/apps/wordpress/miasct/2009/03/29/external-collapsible-panel/獲得。 問題是可摺疊的面板創建擴展JFrame(實際上來自SwingX的JXFrame)的未修飾框架並且行爲像一個框架。Java Swing - 使JFrame像對話框一樣行爲

  1. 我如何擺脫這一點:

enter image description here

  • 不要表現出來的ALT + TAB啄
  • 當我使用「最小化所有窗口「,然後最大化主框架,附加框架保持圖標化。
  • 這裏有一個代碼爲它:提前

    import com.sun.jna.platform.WindowUtils; 
    import java.awt.Point; 
    import java.awt.Shape; 
    
    import java.awt.event.ComponentAdapter; 
    import java.awt.event.ComponentEvent; 
    import java.awt.geom.Ellipse2D; 
    import java.awt.geom.RoundRectangle2D; 
    import javax.swing.JFrame; 
    
    import org.jdesktop.swingx.JXFrame; 
    import ui.MainFrame; 
    
    
    
    /** 
    * CollapsibleFrame 
    * 
    * @author Devon Bryant 
    * @since Mar 26, 2009 
    */ 
    @SuppressWarnings("serial") 
    public class CollapsibleFrame extends JXFrame implements ICollapsibleFrame 
    { 
        // The parent frame to tie this frame to 
        private JFrame parentFrame = null; 
    
        // Orientation (where the collapsible frame is located relative to the parent frame) 
        private Orientation orientation = null; 
    
        /** 
        * Constructor 
        * @param inName the frame name 
        * @param inParentFrame the parent frame to tie this frame to 
        * @param the orientation (where in respect to the parent frame to attach to) 
        */ 
        public CollapsibleFrame(String inName, JFrame inParentFrame, Orientation inOrientation) 
        { 
         super(inName); 
    
         parentFrame = inParentFrame; 
         orientation = inOrientation; 
           setUndecorated(true);   
        } 
    
        /* (non-Javadoc) 
        * @see com.mia.sct.view.panel.ICollapsibleFrame#relocate() 
        */ 
        @Override 
        public void relocate() 
        { 
         offset(0, 0); 
        } 
    
        /* (non-Javadoc) 
        * @see com.mia.sct.view.panel.ICollapsibleFrame#offset(int, int) 
        */ 
        @Override 
        public void offset(int inX, int inY) 
        { 
         if ((parentFrame != null && parentFrame.isVisible())) 
         { 
          Point p = null; 
          int x = 0; 
          int y = 0; 
    
          // Calculate the new x,y coordinates for this frame based on the parents location 
          switch (orientation) 
          { 
           case TOP: 
            p = parentFrame.getLocationOnScreen(); 
            x = p.x; 
            y = p.y - getHeight(); 
            break; 
    
           case BOTTOM: 
            p = parentFrame.getLocationOnScreen(); 
            x = p.x; 
            y = p.y + parentFrame.getHeight(); 
            break; 
    
           case LEFT: 
            p = parentFrame.getLocationOnScreen(); 
            x = p.x - getWidth(); 
            y = parentFrame.getContentPane().getLocationOnScreen().y; 
            break; 
    
           case RIGHT: 
            p = parentFrame.getLocationOnScreen(); 
            x = p.x + parentFrame.getWidth(); 
            y = parentFrame.getContentPane().getLocationOnScreen().y; 
            break; 
          } 
          x += inX; 
          y += inY; 
    
          // set the location of this frame 
          setLocation(x, y);      
         } 
        } 
    
        /* (non-Javadoc) 
        * @see com.mia.sct.view.panel.ICollapsibleFrame#setMask(java.awt.Shape) 
        */ 
        public void setMask(Shape inShape) 
        { 
         WindowUtils.setWindowMask(this, inShape); 
        } 
    
        /* (non-Javadoc) 
        * @see com.mia.sct.view.panel.ICollapsibleFrame#setAlpha(float) 
        */ 
        public void setAlpha(float inAlpha) 
        { 
         if (WindowUtils.isWindowAlphaSupported()) 
         { 
          WindowUtils.setWindowAlpha(this, inAlpha); 
         } 
        } 
    } 
    

    感謝。

    回答

    2

    不是好主意,持有兩人同時JFrames(或其SwingX衍生物),你必須改變,對於取消裝飾JDialogJWindow(其SwingX衍生物),該解決三個問題,你可以正確設置

    • setParent

    • setModalModalityTypes

    • 沒有iconified in WinOS

    +0

    感謝回覆。你看到代碼來自我提供的鏈接。也許有使用Jframe的理由?請查看我添加的代碼。謝謝。 – bunnyjesse112 2011-12-15 09:15:04