Swing提供了三個主要的頂級容器類:JFrame, JDialog和JApplet。接下來進行對JFrame和JDialog的學習。
1. JFrame
package cn.edu.sdut.acm;
import javax.swing.*;
import java.awt.*;
public class Main{
public static void main(String[] args){
JFrame f = new JFrame("窗體標題"); // 創建窗體對象
f.setVisible(true); // 設置窗體可見
/*
窗體關閉規則:
EXIT_ON_CLOSE 隱藏窗體並停止程序
DO_NOTHING_ON_CLOSE 無任何操作
HIDE_ON_CLOSE 隱藏窗口但不停止程序
DISPOSE_ON_CLOSE 釋放窗體資源
*/
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// f.setSize(300, 200); // 設置寬高,單位爲像素
// f.setLocation(200, 200); // 設置窗體出現的默認座標,單位爲像素
f.setBounds(200, 200, 300, 200); // 設置窗體座標和大小
Container c = f.getContentPane(); // 獲取窗體容器
c.setBackground(Color.WHITE); // 設置窗體顏色
JLabel l = new JLabel("這是一個標籤");
c.add(l); // 添加組件
// c.remove(l); // 刪除組件
c.validate( ); // 驗證容器中的組件,使容器可以再次佈置組件(刷新)
// f.setContentPane(c); // 窗體重新載入容器(刷新)
f.setResizable(false); // 設置窗體是否可以改變大小
System.out.println("x="+f.getX()+" y="+f.getY()); // 獲取窗體的位置座標
}
}
2. JDialog
package cn.edu.sdut.acm;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class Main extends JDialog {
public Main(JFrame jFrame){
/*
* 第一個參數,父窗體對象
* 第二個參數,對話框標題
* 第三個參數,是否阻塞父窗體
*/
super(jFrame, "對話框標題",true);
Container c = getContentPane(); // 獲取窗體容器
c.add(new JLabel("這是一個標籤"));
setBounds(100, 100, 100, 100);
}
public static void main(String[] args){
JFrame f = new JFrame("父窗體");
f.setBounds(50, 50, 300, 300);
Container c = f.getContentPane();
JButton btn = new JButton("彈出對話框");
c.setLayout(new FlowLayout()); // 設置佈局,使用流佈局
c.add(btn);
f.setVisible(true);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
btn.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
Main m = new Main(f);
m.setVisible(true); // 設置窗體可見
}
}); // 添加動作監聽
}
}