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,空布局或所需的任何布局。布局管理器帮助布局此容器保存的组件。
setBounds(...)方法用于设置单个组件的位置和大小,并且仅在包含此组件的容器使用null布局时才有用。
当将布局设置为null时,您告诉容器它根本不使用布局,因此程序员将完全负责设置添加到此容器的组件的所有大小和位置。
话虽如此,您应该努力避免使用null布局和setBounds(...)。对于新手Swing程序员而言,这似乎是创建复杂布局的最简单方法,当使用它们时,您创建的GUI可能只在一个平台上看起来不错。更重要的是,他们创建了几乎不可能进行维护和升级而又不会引起细微错误的GUI。只是尽可能不要使用它们。
请仔细阅读official layout manager tutorials,因为那里对此有很好的解释。




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

关于java - SetLayout函数的主要用途,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30947870/

10-12 17:41