2

这里只是一个简单的问题。我有一个程序,我需要在其中创建许多 JPanel,然后每个 JPanel 都包含一些对象(通常是 JLabels)。

每次创建新的 JPanel 时,我都必须执行一些操作,我想知道我执行这些操作的顺序是否有任何影响,或者是否有标准做法。

我做的操作如下:

声明 JPanel:JPanel panel = new JPanel(...)

声明 JLabel:JLabel laberl = new JLabel...

将 JPanel 添加到其他内容窗格:frame.getContentPane().add(panel)

设置 JPanel 的边界:panel.setBounds(...)

将 JLabel 添加到 JPanel:panel.add(label)

4

3 回答 3

3

通常顺序并不重要,只要您将所有组件添加到面板,并且在您使框架可见之前将面板添加到内容窗格。

标准做法是使用布局管理器,因此无需设置您添加到内容窗格的面板的边界。

于 2010-03-07T06:10:12.030 回答
3

顺序无关紧要。但是,在创建并完成add所有内容之后,您需要调用revalidate()面板(或pack()其父窗口),以便布局管理器(我假设您正在使用一个!)按应有的方式排列组件。

于 2010-03-07T06:12:44.443 回答
2

有一个方法 createPanel() ,它返回添加了所有子面板的面板。

Panel p = createPanel();
p.setBounds(...); // if you must
frame.getContentPane().add(p);

进而

Panel createPanel() {
  Panel p = new Panel();
  Label l = new Label("Heading");
  p.add(l);
  return p;
}

构建和添加项目的顺序并不重要,除了当您添加孩子时,您应该add按照您希望它们在面板中的顺序。

于 2010-03-07T06:10:42.433 回答