遇到了一些问题。
构建一个必须逐步使用的applet。在每个步骤之后,单击一个按钮,下一步应该添加到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);
}
按钮actionlistener
private void generatePanel1()
{
//adding some Components to the subpanel of Block1, which is a subpanel of cp.
Panel1.add(...);
cp.repaint();
cp.validate();
}
答案 0 :(得分:2)
现在我没有任何可以检查的代码,但是通常需要“验证”向容器中添加(和删除)组件。所以试试
panel.add(...);
panel.revalidate();
JComponent.revalidate()
的API文档:
验证此容器及其所有子组件。
支持延迟自动布局。
调用invalidate,然后将此组件的validateRoot添加到需要验证的组件列表中。在调度所有当前挂起的事件之后将进行验证。换句话说,在调用此方法之后,将验证在向上遍历此组件的包含层次结构时找到的第一个validateRoot(如果有)。默认情况下,JRootPane,JScrollPane和JTextField从isValidateRoot返回true。
当属性值发生更改以使此组件的大小,位置或内部布局受到影响时,将自动在此组件上调用此方法。这种自动更新与AWT不同,因为程序通常不再需要调用validate来获取GUI的内容以进行更新。 validate方法用于使容器再次布置其子组件。在显示容器后修改此容器的子组件(添加到容器中或从容器中删除,或更改布局相关信息)时,应调用它。