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的显示。

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