Swing没有正确渲染我的JPanel

Omr*_*mal 0 java swing rendering loops jpanel

public void renderPanels(){
    for(int i = 1; i<4; i++){
        for(int j = 1; j<4; j++){
            panels[i][j] = new JPanel();
            frame.add(panels[i][j]);

            buttons[i][j] = new JButton();
            panels[i][j].add(buttons[i][j]);

            panels[i][j].setBounds(i*50, j*50, 50, 50);

            panels[i][j].setLayout(null);

            buttons[i][j].setBounds(0, 0, 50, 50);

            System.out.println(panels[i][j].getBounds());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,这是我的代码,用于渲染一个带有按钮的3x3面板网格.frame变量包含一个JFrame对象但遗憾的是我的输出如下面的截图:

截图

最后一次迭代中的帧似乎在一个位置呈现,好像i和j比初始值低1个单位.有任何想法吗?

mKo*_*bel 6

  1. 使用GridLayout而不是setBounds(),NullLayout根本不使用

  2. frame.add(panels[i][j]); 应该是循环中的最后一个代码行

  3. System.out.println(panels[i][j].getBounds());JFrame.pack()调用或JFrame已经visible在屏幕上后返回合理的坐标

  4. 更快地发布SSCCE/MCVE,更短,可运行,可编译