GUI(圖形用戶接口)Swing頂級容器

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); // 設置窗體可見

            }
        }); // 添加動作監聽
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章