Java:如何在将Canvas添加到JFrame时阻止调整其大小?

时间:2016-12-19 18:15:43

标签: java swing canvas jframe

在我的主要运行时:

    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?

1 个答案:

答案 0 :(得分:2)

不要使用Canvas,这是一个AWT组件。

使用Swing时,您应该使用JPanel,然后覆盖面板的getPreferredSize()以返回所需的大小。

此外,setSize()不执行任何操作。布局管理器将根据布局管理器的规则确定每个组件的大小。