preferredLayoutSize(Container parent)
требуется всем менеджером макетов java, но когда этот метод называется?Когда предпочтительнее LayoutSize?
Следующий код находится в GridLayout.java
:
public Dimension preferredLayoutSize(Container parent) {
synchronized (parent.getTreeLock()) {
System.out.println(parent.getWidth() + " " + parent.getHeight());
Insets insets = parent.getInsets();
int ncomponents = parent.getComponentCount();
int nrows = rows;
int ncols = cols;
if (nrows > 0) {
ncols = (ncomponents + nrows - 1)/nrows;
} else {
nrows = (ncomponents + ncols - 1)/ncols;
}
int w = 0;
int h = 0;
for (int i = 0 ; i < ncomponents ; i++) {
Component comp = parent.getComponent(i);
Dimension d = comp.getPreferredSize();
if (w < d.width) {
w = d.width;
}
if (h < d.height) {
h = d.height;
}
}
return new Dimension(insets.left + insets.right + ncols*w + (ncols-1)*hgap,
insets.top + insets.bottom + nrows*h + (nrows-1)*vgap);
}
}
Но что будет по-другому, если бы я изменить весь код выше в следующий?
public Dimension preferredLayoutSize(Container parent) {
return new Dimension(parent.getWidth(), parent.getHeight());
}
спасибо.
Но что будет, если я изменю все коды выше на следующее? probalbly только один (1-й или последний) JComponent будет обрабатывать всю область (из контейнера), GridLayout имеет строки и столбцы – mKorbel
'System.out.println' в' GridLayout.java'? hmm ...) – SeniorJD
@mKorbel, когда я использовал GridLayout, я не видел, чтобы этот метод вызывался вообще. Поэтому мне интересно, в какой ситуации этот метод будет вызван. – tianz