簡體   English   中英

GridBagLayout中的二次JPanel

[英]Quadratic JPanel in GridBagLayout

基本上我有這個設置

    | JFrame with BorderLayout   |
    | -------------------------- |
    | JPanel with GridBagLayout  |
    | JPanel with NullLayout     |

JFrame可調整大小。 具有GridBagLayout的JPanel包含其Elt增益JPanels,基本上看起來像這樣

    |Obj|Obj|Obj|
    |Obj|Obj|Obj|
    |Obj|Obj|Obj|

網格應為二次方。

如果我調整窗口的大小,組件將自動調整,因此,網格將失去其二次方尺寸,並成為矩形。

我可以通過編寫自己的布局管理器來防止這種情況。 所以我要問的是:還有沒有可能實施二次方網格?

代替使用GridBagLayout ,考慮使用MigLayout

您還可以使用null布局,該布局將每個組件的寬度和高度設置為寬度或高度除以行數或列數(取決於您要使用的方式),並將初始xy為根據對此:

(total width % number of columns) / 2

而其他人只是
initialX + cellWidth * (col - 1)
initialY + cellWidth * (row - 1)

將此代碼放入中間JPanelComponentListenercomponentResized(ComponentEvent e){...}方法中,並在設置其邊界的單元格(面板)中循環。 這可能是一種緩慢/手動的方式,但是您將完全控制您希望它們調整大小的方式。

查看http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/index.html上的示例,其中有GridBagLayoutDemo和SpringGridDemo可以解決您的問題。 還是最后一個轉義符,使您的窗口不可調整大小(不好!),就像在GridLayoutDemo中一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM