SetLayout 函数主要用途

SetLayout Function main purpose

 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;
    }

为什么没有 setLayout(null) setBounds() 函数不起作用我只是想了解 setLayout(null) 函数的主要目的

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

  • setLayout(...) 方法允许您设置容器的布局,通常是 JPanel,例如 FlowLayout、BorderLayout、GridLayout、null 布局或任何所需的布局。布局管理器帮助布置此容器中的组件。
  • setBounds(...)方法用于设置单个组件的位置和大小,仅当null布局被容纳此组件的容器使用时才有用。
  • 当您将布局设置为 null 时,您告诉容器它根本没有使用任何布局,因此您程序员将完全负责设置添加到该容器的组件的所有大小和位置.
  • 话虽如此,您应该努力避免使用 null 布局和 setBounds(...)。虽然对于新手 Swing 程序员来说,这似乎是创建复杂布局的最简单方法,但在使用它们时,您创建的 GUI 可能仅在一个平台上看起来不错。更重要的是,他们创建的 GUI 几乎不可能在不引起细微错误的情况下进行维护和升级。尽可能不要使用它们。
  • 请阅读official layout manager tutorials,因为那里有很好的解释。

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