在我的主要运行时:
Canvas can = new Canvas();
can.setSize(400, 400);
System.out.print(can.getWidth() + ", " + can.getHeight() + " ");
JFrame frame = new JFrame();
frame.add(can);
frame.pack();
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
System.out.println(can.getWidth() + ", " + can.getHeight());
控制台显示: 400,400 410,410
似乎当我将Canvas添加到我的JFrame并打包JFrame时,它会为我的Canvas的宽度和高度增加10个像素。有什么方法可以防止这种情况发生并获得400乘400的Canvas?
答案 0 :(得分:2)
不要使用Canvas,这是一个AWT组件。
使用Swing时,您应该使用JPanel
,然后覆盖面板的getPreferredSize()
以返回所需的大小。
此外,setSize()不执行任何操作。布局管理器将根据布局管理器的规则确定每个组件的大小。