簡介
JPanel 是 Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合。
所有已實現的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知子類:
AbstractColorChooserPanel, JSpinner.DefaultEditor
JPanel 是一般輕量級容器.
使用方法
JPanel 可以為添加到窗體中的輕型控制項提供通用的容器。默認情況下,面板容器不會向控制項添加任何除自身背景之外的顏色,但是,可以輕鬆地向其添加框線(borders) 並根據需要改制樣式。
在大多數Java GUI外觀體驗(look and feel)中,面板容器默認是不透明。不透明的面板容器跟普通的目錄窗格功能差別不大,並且可以有效幫助樣式改進。
設定圖層管理器
和其他容器(container)一樣,面板容器 panel 也使用布局管理器(Layout Manager)對添加到容器中的組件(compnent)進行定位和設定尺寸大小。默認情況下,面板容器的布局管理器是FlowLayout(流式布局)類的一個實例,這個類對放置在容器中的空間按行進行布局(從左到右諸行排列)。 在創建面板容器時,你可以輕鬆地使用任何其他布局管理器通過調用setLayout方法或指定一個布局管理器。
如下是一個在創建面板容器時設定圖層管理器的例子:
但這種方法不能用在BoxLayout(盒子布局)中,因為BoxLayout 構造器需要一個預留(pre-existing)容器。如下所示:
添加控制項
向面板容器中添加組件時使用add()方法,而向add()方法中傳遞的參數決定於該面板容器使用哪個布局管理器。當所用的布局管理器是FlowLayout,BoxLayout,GridLayout,或SpringLayout 時,像通常那樣向add()方法傳遞單一的參數即可,如下所示:
而當布局管理器為BorderLayout時,還需要提供另一個參數來指定添加到容器中控制項的位置,例如:
對於GridBagLayout布局管理器,可以使用上述任一方法,但必須以某種方式對每個組件指定GridBagConstraints,例如:
警告
Swing 不是執行緒安全的。
此類的序列化對象與以後的 Swing 版本不兼容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程式之間進行 RMI(Remote Method Invocation,遠程方法調用)
構造方法
JPanel() 創建具有雙緩衝和流布局的新 JPanel。
JPanel(boolean isDoubleBuffered) 創建具有 FlowLayout 和指定緩衝策略的新 JPanel。
JPanel(LayoutManager layout) 創建具有指定布局管理器的新緩衝 JPanel。
JPanel(LayoutManager layout, boolean isDoubleBuffered) 創建具有指定布局管理器和緩衝策略的新 JPanel