As you said, it pack()will try to arrange the window so that each component is resized to its preferred size.
The problem is that the layout manager is apparently the one who is trying to organize the components and their respective preferred values. However, when you install the layout manager as null, no one is responsible for this.
setLayout(null), . , LayoutManager.
:
import java.awt.Dimension;
import javax.swing.*;
public class Game extends JFrame {
private static final long serialVersionUID = -7919358146481096788L;
JPanel a = new JPanel();
public static void main(String[] args) {
new Game();
}
private Game() {
setTitle("Insert name of game here");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
a.setPreferredSize(new Dimension(600, 600));
add(a);
pack();
setVisible(true);
}
}