Java 为什么JButton btn[3][5]没有被放置在setBounds()调用中给定的位置上?

Java 为什么JButton btn[3][5]没有被放置在setBounds()调用中给定的位置上?,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,我正在编写一个程序,它应该包含多个并排设置的JButton。起初我想要一个4乘6的网格。我有3个类:一个包含Main方法的主clas和一个Gui类构造函数的构造函数调用。Gui类应该包括所有JObjects JButtons和JFrame设置。然后还有第三个ButtonPlacement类,它包含setBounds方法调用。当我在Eclipse中运行代码时,我的按钮数组中的ervery按钮被放置在正确的位置,除了最后一个:btn[3][5]。它和整个JFrame一样大 班长: package p

我正在编写一个程序,它应该包含多个并排设置的JButton。起初我想要一个4乘6的网格。我有3个类:一个包含Main方法的主clas和一个Gui类构造函数的构造函数调用。Gui类应该包括所有JObjects JButtons和JFrame设置。然后还有第三个ButtonPlacement类,它包含setBounds方法调用。当我在Eclipse中运行代码时,我的按钮数组中的ervery按钮被放置在正确的位置,除了最后一个:btn[3][5]。它和整个JFrame一样大

班长:

package pack1;

public class Main {

    public static void main(String[] args) {

        new Gui();
    }
}
类Gui:

package pack1;

import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JFrame;

import pack1.ActionHandler;
import pack1.ButtonPlacement;

public class Gui {

    static JFrame jf;
    static JButton btn[][] = new JButton[4][6];
    JButton btnReset;

    public Gui() {

        jf = new JFrame();
        jf.setSize(500, 600);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setResizable(false);
        jf.setLocationRelativeTo(null);



        for(int i = 0; i<4;++i) {
            for(int j = 0; j<6; ++j) {
            btn[i][j] = new JButton("btn" + i + j);
            btn[i][j].setVisible(true);
            btn[i][j].addActionListener(new ActionHandler());
            btn[i][j].setFocusPainted(false);
            btn[i][j].setContentAreaFilled(true);
            btn[i][j].setBorder(null);
            btn[i][j].setFont(new Font("Century Gothic", Font.PLAIN, 20));
            jf.add(btn[i][j]);
            }

        }

        ButtonPlacement.place();

        jf.setVisible(true);

    }

}

我希望按钮btn[3][5]位于其位置300、440处,大小为100、60,但该按钮与JFrame一样大。

将其添加到类Gui中可以让它正常工作:

jf.setLayout(null);

不要使用挫折。使用布局管理器RSA GridLayout可能工作得很好我想在没有任何布局管理器的情况下这样做,我想知道,为什么最后的挫折调用btn[3][5]无法工作;在类Gui中,它工作得很好,但不知道为什么没有它,其他JButton的布局也能工作。这正是你不应该做的。这保证了gui在除了一个平台之外的所有平台上都会看起来很糟糕,并且很难维护和增强正常工作以“正常工作”Swing/AWT gui需要使用布局。Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。
jf.setLayout(null);