2013-01-12 154 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的將嘗試使用的可用空間以填充部件成,

現在,包,幀的尺寸已被設置(通常)對內容窗格的優選大小。

所以,現在你問,爲什麼它沒有設置它提供的。答案是,框架也需要包括外框裝飾,從可用空間(幀大小 - 裝飾鑲石=可用空間)中減去,還需要考慮到菜單欄