JavaSwing控件的使用和介紹(一)---JFrame

JavaSwing控件的屬性配置和優勢

最近學習了有關JavaGUI的相關的知識,個人感覺和Android控件的設置有點類似,可以設置佈局,填充數據,以及設置監聽事件等等,面對新的API,想通過近期的幾篇博客把遇到的問題,和有關JavaGUI新鮮的地方總結下來,和大家共同分享自己的想法和編程的樂趣。

JComponent與AWT的繼承關係

在有關JavaGUI的繼承關係中有這樣的一個原則那就是控件在前容器在後,也就是說容器是作爲控件的子類存在的,有關JComponent的繼承關係大概是這樣的:
java.lang.Object>>java.awt.Component>>java.awt.Container>>javax.swing.JComponent。
熟悉繼承關係能進一步的瞭解各個類之間的關係,同時也方便自己對各個類內部方法調用的理解和認識。

JFrame.getContentPane()自帶容器

這個方法返回的是一個JFrame的容器,和其他的容器一樣,該容器一樣可以進行添加控件設置背景色等操作,不同的是由於是從JFrame中直接拿到的容器所以不需要將該容器往JFrame中進行添加。進行簡單的設置和添加控件之後我們就可以按照JFrame的常用步驟進行相關的操作就可以了:

class TestJFrame{
    public static void main(){
        JFrame jf=new JFrame("TestJFrame");
        Container ct=jf.getContentPane();
        ct.setlayout(new FlowLayout(FlowLayout.LEFT,20,20));
        JLable hello=new JLabel("你好!");
        JLabel bye=new JLable("再見");
        hello.setOpaque(true);
        hello.setBackground(Color.RED);
        ct.add(hello);
        ct.add(bye);
        ct.setBackground(Color.BLUE);
        jf.setSize(300,200);
        jf.setLocation(10,10);
        jf.addWindowListener(new WindowAdapter(){
            @override
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
    } 
}

有關AWT.Label中的亂碼問題

在使用Label的時候如果我們使用的AWT中的Label控件的話,如果我們在改控件中添加了文字在運行之後就會出現亂碼的問題,解決的方案是一方面我們可以在RunConfigurations中設置,另外一個方面就是直接棄用Label而是選擇使用Swing下的JLabel,這樣的話如果在項目的編碼方式中我們選用的是UTF-8那麼亂碼現象就會消失。

JFrame的兩種窗口關閉方式

JFrame窗口的關閉方式目前學到的主要有兩種一種是通過調用addWindowListener()方法來實現,另外一種方式就是通過直接調用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)達到關閉窗口的目的。具體編碼如下:

public static void main(){
    JFrame jf=new JFrame("TestClose");
    //實現方式一
    jf.addWindowListener(new WindowAdapter(){
        @override
        public void windowClosing(WindowEvent e){
            System.exit(0);
        }
    });
    //實現方式二
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

總結:

有關JFrame的使用要注意的就是一方面是他自帶容器的利用,這個容器無需添加,另外一個方面就是常見的配置流程:在創建對象的時候傳入字符串,添加控件,設置大小以及Location,設置窗口的關閉方式,最後通過調用JFram.setVisible(ture)實現Frame的顯示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章