1
我有一個主框架和一個連接的可摺疊面板,我從http://sourceforge.net/apps/wordpress/miasct/2009/03/29/external-collapsible-panel/獲得。 問題是可摺疊的面板創建擴展JFrame(實際上來自SwingX的JXFrame)的未修飾框架並且行爲像一個框架。Java Swing - 使JFrame像對話框一樣行爲
- 我如何擺脫這一點:
- 不要表現出來的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);
}
}
}
感謝。
感謝回覆。你看到代碼來自我提供的鏈接。也許有使用Jframe的理由?請查看我添加的代碼。謝謝。 – bunnyjesse112 2011-12-15 09:15:04