2010-03-23 71 views
2

是否可以在Java Swing中鎖定JFrame的寬高比?Java - JFrame鎖定長寬比

例如,如果我的窗口是200px乘200px,並且用戶想要調整它的大小,我希望寬高比爲1:1,這樣如果新寬度爲400px,則新高度被強制爲400px。

我知道ComponentListenercomponentResized,但我很難不讓它進入無限循環的調整大小,因爲我正在調整窗口的大小調整大小的監聽器。

謝謝!

回答

3

我沒有具體回答你的問題,但我經常發現的方式,以避免「調整的無限循環」你說說是推遲您的來電調整窗口大小:

boolean correctAspectRatio = ...; // check to see if new size meets aspect ratio requirements 

if (!correctAspectRatio) { 
    final Frame _frame = this; 
    final int _width = ...; // calculated width 
    final int _height = ...; // calculated height 

    SwingUtilities.invokeLater(new Runnable(){ 
    public void run() { 
     _frame.setSize(_width, _height); 
    } 
    }); 
} 
+0

即使我這樣做,它仍然會進入一個調整大小的循環,它只是不明顯。試着做_width + 20,_height + 20,你會明白我的意思。 – mgbowen 2010-03-23 00:58:51

+0

我假設你不調用調整大小,如果大小符合長寬比,對吧?看到我編輯的答案 – 2010-03-23 01:04:12

+0

啊,這很好。我想在用戶調整大小時,確實沒有太多辦法來做到這一點,但這種方式很好。謝謝。 – mgbowen 2010-03-23 01:19:10