一、Swing容器JFrame
(又叫窗口,不能放在其他容器之中)
常用構造方法:JFrame("String title")
eg: JFrame frame = new JFrame("這是窗口標題");
二、Swing容器JDialog
(又叫對話框)
- 模態對話框:用戶必須處理完該對話框後才能與其他對話框進行交互;
- 非模態對話框:允許用戶處理對話框的同時與其他窗口交互;
常用構造方法:
JDialog(Frame owner);
JDialog(Frame owner,String title,boolean modal);
owner爲對話框所有者(頂級窗口JFrame);
modal爲true就是模態對話框,false爲非模態對話框;不指定默認爲false。
三、Swing常見佈局管理器
(不能單獨存在必須放在容器中)
1.BorderLayout(邊界佈局管理器)
將容器劃分爲5個區域:
向BorderLayout佈局管理器中添加組件時用到的方法:
add(Component comp,Object constrains);
comp:表示要添加的組件;constrains:添加到佈局中的位置;
示例:
JFrame f = new JFrame("BorderLayout");
// 設置窗體中的佈局管理器爲BorderLayout
f.setLayout(new BorderLayout());
f.setSize(300, 300); // 設置窗體大小
f.setLocation(300, 200); // 設置窗體顯示的位置
// 將按鈕組件添加到窗體中,並設置按鈕所在的區域
f.add(new JButton("PAGE_START"), BorderLayout.PAGE_START);
f.add(new JButton("PAGE_END"), BorderLayout.PAGE_END);
f.add(new JButton("LINE_START"), BorderLayout.LINE_START);
f.add(new JButton("LINE_END"), BorderLayout.LINE_END);
f.add(new JButton("CENTER"), BorderLayout.CENTER);
f.setVisible(true); // 設置窗體可見
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
注:當不指定添加到哪個區域時,默認添加到CENTER區域,且後續添加會覆蓋之前放入的組件。
2.FlowLayout(流式佈局管理器)
(從左向右放置,在到達邊界時會自動換行,且組件會隨着窗口縮放而改變位置,即換行)
常用構造方法:FlowLayout(int align,int hgap,int vgap);
align:對齊方式;hgap:組件水平間距;vgap:組件垂直間距。
JFrame f = new JFrame("Flowlayout");
// 設置窗體中的佈局管理器爲FlowLayout,
// 所有組件左對齊,水平間距爲20,垂直間距爲30
f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 30));
f.setSize(400, 200); // 設置窗體大小
f.setLocation(300, 200); // 設置窗體顯示的位置
// 向容器添加組件
f.add(new JButton("第1個按鈕"));
f.add(new JButton("第2個按鈕"));
f.add(new JButton("第3個按鈕"));
f.add(new JButton("第4個按鈕"));
f.add(new JButton("第5個按鈕"));
f.setVisible(true); // 設置窗體可見
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3.GirdLayout(網格佈局管理器)
(使用縱橫線將容器分爲n行m列大小相等的網格,排列順序爲從左至右,從上至下)
常用構造方法:GirdLayout(int rows,int cols,int hgap,int vgap);
JFrame f = new JFrame("GridLayout");
f.setLayout(new GridLayout(3, 3, 20, 30)); // 設置該窗體爲3*3的網格
f.setSize(300, 300); // 設置窗體大小
f.setLocation(400, 300);
// 下面的代碼是循環添加8個按鈕組件到GridLayout容器中
for (int i = 1; i < 9; i++) {
Button btn = new Button("btn" + i);
f.add(btn);
}
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);