如何修正javaswing jframe的大小错误

idfiyjo8  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(266)

我在练习摇摆布局。我发现jframe的实际尺寸与尺寸不匹配

import java.awt.*;

import javax.swing.*;

public class GridRanFruit {
    public GridRanFruit() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(600, 600));
        frame.setLayout(null);

        JPanel primary = new JPanel();
        primary.setBounds(new Rectangle(0, 0, 600, 600));
        primary.setLayout(new GridLayout(4, 4));

        JPanel panels[][] = new JPanel[4][4];

        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                JPanel panel = new JPanel();
                panel.setBackground(Color.gray);
                primary.add(panel);
                panels[i][j] = panel;
            }
        }

        int ranSeed = (int) (Math.random() * 16);
        panels[ranSeed/4][ranSeed%4].setBackground(Color.green);

        frame.getContentPane().add(primary);
        frame.pack();
        frame.setVisible(true);

    }
}

你可以从下面的图片中找到小错误。如何解决这个问题?我在用 setPerferredSize 方法。意思是 JFrame 大小不匹配 JPanel 虽然大小一样
误差高度
误差宽度
正常尺寸

z3yyvxxp

z3yyvxxp1#

尝试替换要设置大小的行

frame.setSize(600,600);

setpreferredsize(),就像一位评论员所说的,是用于内容窗格(框架内可以放置东西的空间),而不是框架本身(窗口的边框)。

相关问题