1
我目前正在嘗試使用MouseListeners實現使用未修飾的JFrame
對窗口進行大小調整。以下是我實現調整JFrame東側的示例。調整JFrame的西側java
sizeX
和sizeY
是從程序的初始化部分取得的幀的當前大小。 bg
是我的內容窗格中唯一的元素。我用frame.pack()
。
public void mouseMoved(MouseEvent e){
if((sizeX - 2) <= e.getX()){
changeCursor(new Cursor(Cursor.E_RESIZE_CURSOR), true);
}else{
changeCursor(new Cursor(Cursor.DEFAULT_CURSOR), false);
}
printInfo("Moved", e);
}
public void mouseDragged(MouseEvent e){
if(sizeX < e.getX() ||
sizeX > e.getX()){
resizeXE(e);
}
printInfo("Dragged", e);
}
void changeCursor(Cursor cursor, boolean resize){
if(resize){
resizeFlag = true;
}else{
resizeFlag = false;
}
bg.setCursor(cursor);
}
void resizeXE(MouseEvent e){
if(resizeFlag){
sizeX = e.getX();
((JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, bg)).setSize(
sizeX, sizeY);
}
}
我需要幫助,試圖實施西側的大小調整。我相信如果我弄明白這一點,我可能不會需要在南北兩側提供幫助。
正如您所看到的,我正在嘗試使用setSize()
方法調整大小。但是我不明白我在西側如何使用它。任何建議的替代品?
有道理。我實際上是在避免這樣做,但現在我會嘗試。 – kir
我已經完成了它,但它太.. .. twitchy。與西部相比,東部的調整更爲順暢。這顯然是由'setLocation'造成的。是否有可能使其調整更清潔? – kir
@ user2280704,請參閱[調整組件大小](http://tips4java.wordpress.com/2009/09/13/resizing-components/)。它會比你更復雜,因爲它支持其他功能,如貼緊,但如果仔細查看代碼,它可能會給你一些想法。 – camickr