簡體   English   中英

Java Swing:如何為組件定義一個最小維度(兩個)?

[英]Java Swing: How do I define one minimal dimension (of the two) for components?

要成功定義最小大小,我必須執行以下操作:

// setting minimal width AND height
Dimension min = new Dimension(100, 100);
comp.setMinimumSize(min);
comp.setPreferredSize(min);
comp.setSize(min);

當我離開一行時,它不起作用,這很奇怪,但這不是重點。

我該怎么做,以限制只有兩個維度(寬度高度) 之一 ,讓部件和/或布局管理器自動決定對未指定的尺寸?

當我對該維度使用非常小的值而我不想限制時,許多組件顯示錯誤(即太小)。

默認情況下(即,如果未在組件上調用setMinimumSize ), getMinimumSize委托給組件的布局管理器,因此您可以嘗試重新定義getMinimumSize方法,如下所示:

public Dimension getMinimumSize()
{
    return new Dimension(minWidth, super.getMinimumSize().height);
}

如果這樣做,請記住不要在組件上調用setMinimumSize

我自己提出一個方法:

對於將一個軸(例如BoxLayout )對齊的布局管理器,可以指定設置為Integer.MAX “未定義維度”。 這很奇怪,但它確實有效。 似乎忽略了與對齊軸相對的軸(除非它太小,如問題中所述)。

private final static int UNSPECIFIED_DIMENSION = Integer.MAX_VALUE;

public static void setMinimalDimension(Component comp, int width, int height) {
  Dimension dim = new Dimension(width, height);
  comp.setMinimumSize(dim);
  comp.setPreferredSize(dim);
  comp.setSize(dim);
}

public static void setMinimalWidth(Component comp, int width) {
  setMinimalDimension(comp, width, UNSPECIFIED_DIMENSION);
}

public static void setMinimalHeight(Component comp, int height) {
  setMinimalDimension(comp, UNSPECIFIED_DIMENSION, height);
}

如上所述,使用軸對齊布局管理器。

是的,還有另一個關於Java Swing的謎團......

暫無
暫無

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

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