很久以來,我一直想知道何時使用JFrame和JPanel。我被教科書,當面和通過互聯網搜索告訴了一些原因,但是當然,這讓我看着Java文檔來發現JPanel具有paintComponent(Graphics);方法,它允許您指定對象本身的操作,與JFrame不同。另外,JPanels是可嵌套的,允許更復雜的圖形,而不是僅使用一個容器就能實現的圖形。我也偶然發現JLabel也是一個容器。 (它甚至有一個驚人的佈局!)現在我的問題是:我應該什麼時候使用JLabel,什麼時候應該使用JPanel?何時使用JFrame,JLabel和JPanel
//我知道你可以把JLabel放入一個JPanel中,並且偶然地發現JPanel比JLabel更昂貴。從長遠來看,我計劃製作一款出納遊戲,其中包含一些輕量級容器,用於點擊時移動到客戶手中的「錢」。我正在考慮使用JLabels來計算貨幣金額(美元賬單和硬幣),而JPanel則用作交易的開銷視圖。我也在考慮在「錢標籤」本身上調用repaint()(據我的理解,它可以模擬動畫)。這是一個雙重問題,但你會認爲這是最簡單的方法嗎?
一般來說,JPanel被用作Container。您將組件(JLabel,JTextField,JTable,JButton等)添加到面板並將面板添加到框架。您可以根據需要使用多個面板。也許可以幫助GIU的佈局。 – camickr
您應該只使用'JFrame'或'JDialog'(或其他頂級容器)來顯示其他容器(如'JPanel')。您應該儘量使用'JPanel'作爲您的所有表單的基線容器,並根據需要嵌套其他面板和控件。這使您可以靈活地在任何您喜歡的頂級容器中顯示您的面板/表單。 – MadProgrammer
我認爲這樣做的主要原因是JLabel的設計主要就是:標籤。它們可以用作容器,並且具有repaint(),paintComponent(),但是如果試圖通過爲JLabel構造函數指定字符串參數來標記容器中的內容(JLabel!),可能會出現問題描述那裏有什麼。另一方面,JPanel是一個Panel,一個GUI的指定部分。鑑於它是一個獨特的部分,它自然是一個容器,因此應該給予這些東西。這一切都有道理! –