首页 > 解决方案 > 如何修复 Java Swing JFrame 的大小错误

问题描述

我正在练习 Swing 布局。我求 JFrame 的实际大小与 size Dimension 不匹配

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

误差高度

误差宽度

正常尺寸

标签: javaswingjframecomponentsjpanel

解决方案


尝试将设置大小的行替换为

frame.setSize(600,600);

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


推荐阅读