2010-11-07 69 views
0

我正在使用NetBeans開發一個簡單的圖像瀏覽器。我有ImageBrowser這個類,它擴展了JFrame(通過右鍵單擊NetBeans項目然後新建 - > JFrame表單創建它),並在其內部生成一個JPanelJToolbarJButtons作爲來自用戶選擇的目錄的圖像縮略圖。根據JPanel圖像內容調整JFrame大小?

單擊圖像縮略圖可在此主JPanel上顯示整個圖像。基本上圖像是不同的大小,我想JFrame(即整個窗口)自動調整到圖像的大小。

我已經打過電話.pack()每次主`JFrame的」 JPanel中內容的變化(即當用戶點擊縮略圖,並觸發一個ActionEvent),但它給我這個錯誤:

non-static method pack() cannot be referenced from static content

所以我很困擾這一點,我想知道是否有辦法做到這一點。如果存在,是否也可以在JFrame窗口大小上設置最大限制?

至於佈局,JFrame是一個免費佈局,使用NetBeans GUI開發人員構建。

+0

也許最好不要調整窗口大小,而是縮放圖像本身? – Rogach 2010-11-07 18:38:45

+0

是的,我決定在實現真正的圖像瀏覽器縮放圖像而不是窗口之後做到這一點。很明顯,但它只是滑了我的頭腦哈哈。非常感謝 – Flynn 2010-11-08 07:19:57

回答

0

non-static method pack() cannot be referenced from static content

請勿在應用程序中使用靜態方法。沒有必要這樣做。假設您遵循Swing tutorial examples中的示例代碼,唯一的靜態方法應該是main()方法和「createAndShowGUI」方法。

您可以通過使用

SwingUtilities.windowForComponent(...); 

你從動作事件源,然後使用該組件找到窗口收拾找到窗口收拾()。

is it also possible to set a maximum limit on the JFrame window size?

做的包()。然後,如果維度超出了限制範圍,則可以通過調用Window上的setSize()來始終覆蓋最大大小。

我也同意,每次圖像改變時不斷改變窗口的大小並不是一個好的設計。

我會將圖像添加到JLabel並將標籤添加到滾動窗格,以便在圖像大於框架大小時可以顯示該滾動條。

+0

非常感謝camickr。我決定縮小圖像的尺寸,並將窗框設置爲固定尺寸。 – Flynn 2010-11-08 07:20:46