2013-01-12 58 views
0

我是Java新手(虽然我在JavaScript方面有广泛的知识),
我试图与Canvas一起工作,这导致了这个奇怪的问题。
检查代码here
正如您所看到的,在我定义了Canvas的大小后,我正在尝试打印它。
但它不能正确打印大小。奇怪的Java画布大小输出

  setMinimumSize(new Dimension(WIDTH,HEIGHT)); 
      setMaximumSize(new Dimension(WIDTH,HEIGHT)); 
      setPreferredSize(new Dimension(WIDTH,HEIGHT)); 

      frame = new JFrame(); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setLayout(new BorderLayout()); 
      frame.add(this, BorderLayout.CENTER); 
      frame.pack(); 
      frame.setResizable(false); 
      frame.setLocationRelativeTo(null); 
      frame.setVisible(true); 

      System.out.println(getWidth()); 

为什么尺寸改变了?

+0

大小是不是为我改变如果我使用这个例子。 –

+0

你可以看到它的输出是'190' ..和实际'WIDTH'变量设置为180 – Israelg99

+0

无我看到180没有190 –

回答

1

首选/最小/最大尺寸是“建议”,以你的组件可能是怎么样的布局管理器来布局,我们有没有gurenttee,他们将使用。

甲BorderLayout的将尝试使用的可用空间以填充部件成,

现在,包,帧的尺寸已被设置(通常)对内容窗格的优选大小。

所以,现在你问,为什么它没有设置它提供的。答案是,框架也需要包括外框装饰,从可用空间(帧大小 - 装饰镶石=可用空间)中减去,还需要考虑到菜单栏