Java 设置布局功能主要用途 public void init_numSolvers(){ 对于(x=0;x

Java 设置布局功能主要用途 public void init_numSolvers(){ 对于(x=0;x,java,awt,layout-manager,Java,Awt,Layout Manager,为什么setBounds()函数在没有setLayout(null)的情况下无法工作我只想了解setLayout(null)函数的主要用途您需要阅读教程和API,因为它们清楚地说明了setBounds和setLayout的作用,但简单地说: setLayout(…)方法允许您设置容器的布局,通常是一个JPanel,也就是说FlowLayout、BorderLayout、GridLayout、null layout或任何所需的布局。布局管理器帮助布局此容器所包含的组件 setBounds(…)方

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

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

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


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

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

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

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

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