Java基础-Swing图形界面、JFrame框架窗体

1、Swing是GUI(图形用户界面)开发工具包,其包括容器、组件和布局等,继承AWT。与用户交互时涉及事件的概念。

2、JFrame框架窗体

JFrame框架窗体是一个容器,是Swing程序中各个组件的载体,   JFrame jf = new JFrame();//创建

在开发中更常用的方式是通过继承java.swing.JFrame类创建一个窗体。

在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器,通常这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。至于JPanel容器会在后面提到。

import java.awt.Color;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class testJFrame {

    /**
     * @param ycy
     */
    public static void main(String[] args) {
        
        JFrame jf = new JFrame();//创建
        Container cc= jf.getContentPane();//返回窗体ContentPane对象
        cc.setBackground(Color.red);//设置组件的颜色
        //jf.getContentPane().setBackground(Color.red);//设置组件的颜色
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        
        JLabel jl = new JLabel("我爱中国!");// 创建一个JLabel标签
        jl.setHorizontalAlignment(SwingConstants.CENTER);// 使标签文字居中
        
        cc.add(jl); // 将标签添加至容器
        
        jf.setVisible(true);//设置显示
        
    }

}

Java基础-Swing图形界面、JFrame框架窗体

常用的窗体关闭方式有四种,分别为“DO_NOTHING_ON_CLOSE”、“DISPOSE_ON_CLOSE”、“HIDE_ON_CLOSE”、“EXIT_ON_CLOSE”。第一种表示什么也不做就将窗体关闭;第二种表示任何注册监听程序对象后会自动隐藏并释放窗体;第三种表示隐藏窗口的默认窗口关闭;第四种表示退出应用程序默认窗口关闭。

jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

 3、JButton组件

按钮组件


public class testJButton {

    /**
     * @param ycy
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        JFrame jf = new JFrame();//创建
        JButton jb = new JButton("确认");
        jf.add(jb);
        
        
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        

        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
        
        jf.setVisible(true);//设置显示
        
    }

}

4、FlowLayout 


该布局称为流式布局管理器,是从左到右,中间放置,一行放不下就换到另外一行。一行能放置多少组件取决于窗口的宽度。默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中(FlowLayout.CENTER)。FlowLayout为小应用程序(Applet)和面板(Panel)的默认布局管理器。其构造函数示例为:

FlowLayout()  //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离。 

FlowLayout(int alinment) //可以设定每行组件的对齐方式。

FlowLayout(int alignment , int horz , int vert) //设定对齐方式并设定组件水平和垂直的距离。

当容器的大小发生变化时,用FlowLayout管理的组件会发生变化。其变化规律是:组件的大小不变,但是相对位置会发生变化。

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame jf = new JFrame();//创建
        //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
        jf.setLayout(new FlowLayout(FlowLayout.RIGHT));//右对齐
        JButton jb = null;
        for(int i=0;i<9;i++){
            jb = new JButton("ok"+i);//创建多个按钮
            jf.add(jb);
        }

        
        
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        

        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
        
        jf.setVisible(true);//设置显示
    }


5、BorderLayout

   这种布局管理器分为东、南、西、北、中心五个方位。北和南的组件可以在水平方向上拉伸;而东和西的组件可以在垂直方向上拉伸;中心的组件可同时在水平和垂直方向上同时拉伸,从而填充所有剩余空间。在使用BorderLayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽。不一定所有的区域都有组件,如果四周区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白。BorderLayout是RootPaneContainer(JInternalFrame、JDialog、JFrame、JWindow)的默认布局管理器。

public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame jf = new JFrame();//创建
        //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
        jf.setLayout(new BorderLayout());//右对齐
        jf.add(new JButton("东"),BorderLayout.EAST);
        jf.add(new JButton("西"),BorderLayout.WEST);
        jf.add(new JButton("南"),BorderLayout.SOUTH);
        jf.add(new JButton("北"),BorderLayout.NORTH);
        jf.add(new JButton("中"),BorderLayout.CENTER);
        
        
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        

        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
        
        jf.setVisible(true);//设置显示
    }

Java基础-Swing图形界面、JFrame框架窗体

给一些间隙,让块之间隔开

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame jf = new JFrame();//创建
        //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
        jf.setLayout(new BorderLayout(4,4));//增加之间的间隙
        jf.add(new JButton("东"),BorderLayout.EAST);
        jf.add(new JButton("西"),BorderLayout.WEST);
        jf.add(new JButton("南"),BorderLayout.SOUTH);
        jf.add(new JButton("北"),BorderLayout.NORTH);
        jf.add(new JButton("中"),BorderLayout.CENTER);
        
        
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        

        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
        
        jf.setVisible(true);//设置显示
    }

Java基础-Swing图形界面、JFrame框架窗体

6、GridLayout表格布局

以表格的形式进行布局管理的,在使用此布局管理器时必须设置显示的行数和列数

public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame jf = new JFrame();//创建
        //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
        jf.setLayout(new GridLayout(4,5,5,5));//GridLayout(行,列,间隔,间隔)
        JButton jb = null;
        for(int i=0;i<19;i++){
            jb = new JButton("JButton"+i);
            jf.add(jb);
        }
        
        jf.setSize(500, 200);//设置大小
        jf.setLocation(300, 200);//设置位置
        jf.setTitle("中国好!");//设置标题
        

        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
        
        jf.setVisible(true);//设置显示
    }

Java基础-Swing图形界面、JFrame框架窗体

7、绝对布局

setBounds(int x, int y, int width, int height)

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            JFrame jf = new JFrame();//创建
            //jf.setLayout(new FlowLayout());//该布局称为流式布局管理器.默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式,默认情况下是居中
            jf.setLayout(null);//
            
            JButton jb1 = new JButton("按钮1");
            JButton jb2 = new JButton("按钮2");
            jb1.setBounds(20, 50, 80, 100);//绝对布局
            jb2.setBounds(100, 150, 100, 100);//绝对布局
            jf.add(jb1);
            jf.add(jb2);
            
            jf.setSize(500, 200);//设置大小
            jf.setLocation(300, 200);//设置位置
            jf.setTitle("中国好!");//设置标题
            

            jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出应用程序默认窗口关闭
            
            jf.setVisible(true);//设置显示
        }

Java基础-Swing图形界面、JFrame框架窗体

扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!

Java基础-Swing图形界面、JFrame框架窗体