Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布局和最小尺寸_Java_Swing_Layout_Size - Fatal编程技术网

Java 布局和最小尺寸

Java 布局和最小尺寸,java,swing,layout,size,Java,Swing,Layout,Size,我正在尝试在现有窗体上插入一个最小大小的新面板。不幸的是,在我这样做之后: this.add(scrap); this.moveScrapCentre(scrap); // runs setLocation(...) this.revalidate(); this.repaint(); (其中此:JPanel带空布局,报废:JPanel带框布局和子项) 尽管我在Netbeans的属性编辑器中设置了最小大小和首选大小,但碎片的大小将调整为(0,0)。除了强制执行scrap.setSize(scr

我正在尝试在现有窗体上插入一个最小大小的新面板。不幸的是,在我这样做之后:

this.add(scrap);
this.moveScrapCentre(scrap); // runs setLocation(...)
this.revalidate();
this.repaint();
(其中
:JPanel带空布局,
报废
:JPanel带框布局和子项)

尽管我在Netbeans的属性编辑器中设置了最小大小和首选大小,但
碎片的大小将调整为
(0,0)
。除了强制执行
scrap.setSize(scrap.getPreferredSize())
之外,如何防止这种情况发生?

“尽管我们强烈建议您使用布局管理器,但您可以在没有布局管理器的情况下执行布局。通过将容器的布局属性设置为null,可以使容器不使用布局管理器。使用这种称为绝对定位的策略,您必须指定容器中每个组件的大小和位置。绝对定位的一个缺点是,调整顶级容器的大小时,绝对定位不能很好地调整。它也不能很好地适应用户和系统之间的差异,例如不同的字体大小和地区。”-

附录:哎呀,我误解了这个问题。就这么做吧

this.setPreferredSize(new Dimension(w, h));
使用所需的
w
h
值。如果
是一个间隔,则布局应该无关紧要

附录:再仔细观察,
scrap
的大小可能会动态变化。您可以相应地覆盖
getPreferredSize()
。当您使用GUI设计器时,您的面板有一个类似以下内容的声明:

public class NewJPanel extends javax.swing.JPanel
您可以在类内部但在生成的代码折叠之外添加所需的方法:

@Override
public Dimension getPreferredSize() {
    return new Dimension(w, h);
}
旁白:GUI设计器是一种辅助工具,它假定您了解底层布局管理器。注意要求您在每个面板上都使用它,而且许多布局都相当复杂。我经常看到设计器的用途保留在需要更复杂布局的面板上,例如
GroupLayout
SpringLayout
”尽管我们强烈建议您使用布局管理器,但您可以在不使用布局管理器的情况下执行布局。通过将容器的布局属性设置为null,可以使容器不使用布局管理器。使用这种称为绝对定位的策略,您必须指定容器中每个组件的大小和位置。绝对定位的一个缺点是,调整顶级容器的大小时,绝对定位不能很好地调整。它也不能很好地适应用户和系统之间的差异,例如不同的字体大小和地区。”-

附录:哎呀,我误解了这个问题。就这么做吧

this.setPreferredSize(new Dimension(w, h));
使用所需的
w
h
值。如果
是一个间隔,则布局应该无关紧要

附录:再仔细观察,
scrap
的大小可能会动态变化。您可以相应地覆盖
getPreferredSize()
。当您使用GUI设计器时,您的面板有一个类似以下内容的声明:

public class NewJPanel extends javax.swing.JPanel
您可以在类内部但在生成的代码折叠之外添加所需的方法:

@Override
public Dimension getPreferredSize() {
    return new Dimension(w, h);
}

旁白:GUI设计器是一种辅助工具,它假定您了解底层布局管理器。注意要求您在每个面板上都使用它,而且许多布局都相当复杂。我经常看到设计器的用途保留在需要更复杂布局的面板上,例如
GroupLayout
SpringLayout

这个问题相关吗d到?@trashgood:不,这是针对实际元素的,不是间隔,我的间隔在正确的布局中。这个问题与吗?@trashgood:不,这是针对实际元素的,不是间隔,我的间隔在正确的布局中。