有一些问题。
构建了必须逐步使用的小程序。在每个步骤之后,单击一个按钮,下一步应添加到GUI中。
问题:如果不缩放,添加的内容将不可见。在应用程序中,您可以解决缩放窗口大小的问题,但是在applet中,我无法解决该问题。
谢谢
编辑:
实际上,它看起来像这样:
Panel cp = new Panel(new GridLayout(0,2));
Panel Block1 = new Panel(new GridLayout(2,2));
Panel Block1 = new Panel(new GridLayout(2,2));
...
在里面
public void init()
{
buildBlock1();
buildBlock2();
add(cp);
cp.setVisible(true);
}
在此处添加一些空面板,之后将被填充的面板
private void buildBlock1()
{
Block1.add(panel1);
Block1.add(panel2);
Block1.add(panel3);
Block1.add(panel4);
cp.add(Block1);
}
按钮动作监听器
private void generatePanel1()
{
//adding some Components to the subpanel of Block1, which is a subpanel of cp.
Panel1.add(...);
cp.repaint();
cp.validate();
}
最佳答案
现在,我没有任何可以检查的代码,但是通常需要对“添加”(或删除)组件到容器中进行验证。所以尝试
panel.add(...);
panel.revalidate();
JComponent.revalidate()
的API文档:验证此容器及其所有子组件。
支持延迟自动布局。
调用invalidate,然后将此组件的validateRoot添加到需要验证的组件列表中。调度所有当前待处理的事件后,将进行验证。换句话说,在调用此方法之后,将验证在向上浏览此组件的包含层次结构时发现的第一个validateRoot(如果有)。默认情况下,JRootPane,JScrollPane和JTextField从isValidateRoot返回true。
当属性值更改,从而影响了此组件的大小,位置或内部布局时,将在此组件上自动调用此方法。这种自动更新与AWT不同,因为程序通常不再需要调用validate来获取要更新的GUI内容。 validate方法用于使容器再次布置其子组件。显示容器后,修改此容器的子组件(添加到容器中或从容器中删除,或更改与布局有关的信息)时,应调用该方法。