複製鏈接
請複製以下鏈接發送給好友

JPanel

鎖定
JPanel 是 Java圖形用户界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,是一種輕量級容器,可以加入到JFrame窗體中。JPanel默認的佈局管理器是FlowLayout,其自身可以嵌套組合,在不同子容器中可包含其他組件(component),如JButton、JTextArea、JTextField 等,功能是對窗體上的這些控件進行組合,相當於C++和C#中的Panel類。
中文名
Java面板容器
外文名
JPanel
定    義
Java GUI工具包中的一個容器類
詞    性
名詞
所屬包
javax.swing

JPanel內容簡介

JPanel是Java圖形用户界面(GUI)工具包swing中的面板容器類,包含在javax.swing包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合。
所有已實現的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知子類:
AbstractColorChooserPanel, JSpinner.DefaultEditor
JPanel 是一般輕量級容器. [1] 

JPanel使用方法

JPanel 可以為添加到窗體中的輕型控件提供通用的容器。默認情況下,面板容器不會向控件添加任何除自身背景之外的顏色,但是,可以輕鬆地向其添加邊框(borders) 並根據需要改制樣式。
在大多數Java GUI外觀體驗(look and feel)中,面板容器默認是不透明。不透明的面板容器跟普通的目錄窗格功能差別不大,並且可以有效幫助樣式改進。 [2] 
設置圖層管理器
和其他容器(container)一樣,面板容器 panel 也使用佈局管理器(Layout Manager)對添加到容器中的組件(compnent)進行定位和設置尺寸大小。默認情況下,面板容器的佈局管理器是FlowLayout(流式佈局)類的一個實例,這個類對放置在容器中的空間按行進行佈局(從左到右諸行排列)。 [3]  在創建面板容器時,你可以輕鬆地使用任何其他佈局管理器通過調用setLayout方法或指定一個佈局管理器。
如下是一個在創建面板容器時設置圖層管理器的例子:
JPanel p = new JPanel(new BorderLayout());
但這種方法不能用在BoxLayout(盒子佈局)中,因為BoxLayout 構造器需要一個預留(pre-existing)容器。如下所示:
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));
添加控件
向面板容器中添加組件時使用add()方法,而向add()方法中傳遞的參數決定於該面板容器使用哪個佈局管理器。當所用的佈局管理器是FlowLayout,BoxLayout,GridLayout,或SpringLayout 時,像通常那樣向add()方法傳遞單一的參數即可,如下所示: [2] 
aFlowPanel.add(aComponent);
aFlowPanel.add(anotherComponent);
而當佈局管理器為BorderLayout時,還需要提供另一個參數來指定添加到容器中控件的位置,例如:
aBorderPanel.add(aComponent, BorderLayout.CENTER);
aBorderPanel.add(anotherComponent, BorderLayout.PAGE_END);
對於GridBagLayout佈局管理器,可以使用上述任一方法,但必須以某種方式對每個組件指定GridBagConstraints,例如:
JPanel pane = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
警告
Swing 不是線程安全的。
此類的序列化對象與以後的 Swing 版本不兼容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠程方法調用

JPanel構造方法

JPanel() 創建具有雙緩衝和流佈局的新 JPanel。
JPanel(boolean isDoubleBuffered) 創建具有 FlowLayout 和指定緩衝策略的新 JPanel。
JPanel(LayoutManager layout) 創建具有指定佈局管理器的新緩衝 JPanel。
JPanel(LayoutManager layout, boolean isDoubleBuffered) 創建具有指定佈局管理器和緩衝策略的新 JPanel
參考資料