Java 按钮排列不正确

Java 按钮排列不正确,java,swing,layout,awt,layout-manager,Java,Swing,Layout,Awt,Layout Manager,我的钮扣排列不正确。。。怎么了 private void loadPuzzleButtons() { if (active_puzzle != null) { int devider = 5; int count = 0; JToggleButton puzzleButton[] = new JToggleButton[active_puzzle.getNumberOfPieces()]; for(int row =

我的钮扣排列不正确。。。怎么了

private void loadPuzzleButtons()
{
    if (active_puzzle != null)
    {
        int devider = 5;
        int count = 0;
        JToggleButton puzzleButton[] = new JToggleButton[active_puzzle.getNumberOfPieces()];
        for(int row = 0; row < active_puzzle.getRows(); row++)
        {
            for(int column = 0; column < active_puzzle.getColumns(); column++)
            {
                puzzleButton[count] = new JToggleButton(new ImageIcon( active_puzzle.getPieces()[count].getPieceImage() ) );
                puzzleButton[count].setLocation(200 + active_puzzle.getPieceWidth() * column + devider * column,
                                                200 + active_puzzle.getPieceHeight() * row + devider * row);
                puzzleButton[count].setContentAreaFilled(false);
                puzzleButton[count].setBorderPainted(false);
                puzzleButton[count].setBorder(null);
                mainPuzzlerPanel.add(puzzleButton[count]);
                mainPuzzlerPanel.validate();
                count++;
            }
        }
        mainPuzzlerPanel.repaint();
    }
}
private void加载按钮()
{
如果(活动的拼图!=null)
{
int-devider=5;
整数计数=0;
JToggleButton PuzzButton[]=新的JToggleButton[active_puzzle.getNumberOfPieces()];
for(int row=0;row
以下是输出的照片:

对不起,我会给你我的全部代码,但它更大,我不打算这样做

提前感谢您,如果您需要更多信息,一定要询问

我向那些不想看到我如何解决问题的人解释了这一点

private void loadPuzzleButtons()
{
    if (active_puzzle != null)
    {
        int count = 0;
        GridLayout puzzleLayout = new GridLayout(active_puzzle.getRows(),active_puzzle.getColumns(),3,3);
        puzzlePanel.setLayout(puzzleLayout);
        JToggleButton puzzleButton[] = new JToggleButton[active_puzzle.getNumberOfPieces()];
        for(int row = 0; row < active_puzzle.getRows(); row++)
        {
            for(int column = 0; column < active_puzzle.getColumns(); column++)
            {
                puzzleButton[count] = new JToggleButton(new ImageIcon(active_puzzle.getPieces()[count].getPieceImage()));
                puzzleButton[count].setContentAreaFilled(false);
                puzzleButton[count].setBorderPainted(false);
                puzzleButton[count].setBorder(null);
                puzzlePanel.add(puzzleButton[count]);
                puzzlePanel.validate();
                count++;
            }
        }
        puzzlePanel.repaint();
    }
}
private void加载按钮()
{
如果(活动的拼图!=null)
{
整数计数=0;
GridLayout Puzzlayout=新的GridLayout(active_puzzle.getRows(),active_puzzle.getColumns(),3,3);
拼图面板。设置布局(拼图布局);
JToggleButton PuzzButton[]=新的JToggleButton[active_puzzle.getNumberOfPieces()];
for(int row=0;row
尝试使用正确填充面板

做什么。getcolumns和getrows输出。试试看。在内部循环中输出列和行,并确保这些数字至少正确。您确定行有增量吗?

您要找哪种类型的对齐方式。所有的都是水平对齐的。我将它们像网格一样排列在一起,只是它们的大小和数量有所变化,因此布局无法固定。@user2925592,您应该使用
revalidate()
not validate(),在将组件添加到面板后只需执行一次即可。因此,重新验证()应该就在重新绘制()之前。网格布局的工作