SetLayout函数的主要用途

时间:2015-06-19 21:57:17

标签: java awt layout-manager

 public void init_numSolvers() {
    for (x = 0; x < 9; x++) {
        n++;
        num[x] = new Button("" + n);
        add(num[x]);
        num[x].setBounds(num_x, num_y, 40, 40);
        setLayout(null);
        num_x += 40;
    }

为什么setBounds()函数在没有setLayout(null)的情况下不起作用我只想了解setLayout(null)函数的主要用途

1 个答案:

答案 0 :(得分:5)

您需要阅读教程和API,因为它们清楚地说明了setBounds和setLayout的作用,但简要说明了一下:

  • setLayout(...)方法允许您设置容器的布局,通常是JPanel,表示FlowLayout,BorderLayout,GridLayout,null布局或任何所需的布局。布局管理器有助于布置此容器所拥有的组件。
  • setBounds(...)方法用于设置单个组件的位置和大小,仅在包含此组件的容器使用null布局时才有用。
  • 当您将布局设置为null时,您告诉容器它根本不使用布局,因此程序员因此完全负责设置添加到此容器的组件的所有大小和位置。 / LI>
  • 说完这些后,您应该尽量避免使用null布局和setBounds(...)。对于新手Swing程序员来说,这似乎是创建复杂布局的最简单方法,在使用它们时,您创建的GUI可能只在一个平台上看起来很好。更重要的是,他们创建了几乎不可能维护和升级的GUI,而不会造成微妙的错误。如果可能的话,不要使用它们。
  • 请阅读official layout manager tutorials,因为这里有很好的解释。

请注意,您的代码会在for循环中重复将容器的布局设置为null。我不知道为什么它会反复这样做,因为你只需要并且想要设置容器的布局一次