Java Swing 界面学习笔记

目录

一、Java Swing组件之间的继承关系

二、JFrame

三、JDialog

四、常用面板

五、常用的组件

1、JLabel标签组件

2、JButton按钮组件

3、菜单栏

4、文本组件

5、密码框组件

6、文本域组件

六、常用布局

1、流布局FlowLayout

2、边界布局BorderLayout

3、网格布局

七、常用的事件监听器

八、JTable


一、Java Swing组件之间的继承关系

二、JFrame

JFrame是一个容器,它是各个组件的载体。

1、新建JFrame对象

JFrame jframe = new JFrame();  //创建没有标题的窗口
JFrame jframe = new JFrame(String s);  //创建标题为 s 的窗口

    //JFrame类的setTitle(String s)方法也可设置标题

2、设置JFrame窗体的大小

frame.setLocationRelativeTo(null);可设置窗口居中显示
//通过JFrame的对象名调用以下方法实现对应功能

public void setSize(int width,int height){}  //设置窗口的大小(单位为px)
public void setLocation(int x,int y){}  //设置窗口的位置,默认位置是(0,0)
public void setBounds(int a,int b,int width,int height){}  //设置窗口的初始位置是(a,b),窗口的宽是width,高是height
public void setVisible(boolean b){}  //设置窗口是否可见,默认是false不可见的
public void setResizable(boolean b){}  //设置窗口是否可被用户调整大小,默认是ture可调整
public void dispose(){}  //撤销当前窗口,并释放当前窗口的所使用的资源

public void setExtentedState(int state){}  //设置窗口的扩展状态
    /**
    *  其中state参数取JFrame类中下列类常量
    *  MAXIMIZED_HORIZ
    *  MAXIMIZED_VERT
    *  MAXIMIZED_BOTH
    */

3、设定JFrame的关闭方式

public void setDefaultCloseOperation(int operation)  //该方法用来设置单击窗体右上角的关闭图标后,程序会作出怎样的处理,其中operation参数取JFrame类中的下列int型static常量,程序会根据参数operation的取值作出不同的处理

    /**
    *  DO_NOTHING_ON_CLOSE(什么也不做)
    *  HIDE_ON_CLOSE(隐藏当前窗口)
    *  DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗口所占有的其他资源)
    *  EXIT_ON_CLOSE(结束窗口所在的应用程序)
    /

三、JDialog

        继承自java.awt.Dialog类。他是从一个窗体弹出来的另外一个窗体。他和JFrame类似,需要

调用getContentPane将窗体转换为容器,然后在容器中设置窗体的内容。

        JDialog:可当成一个JFrame使用,但必须从属于JFrame。JFrame类中的方法JDialog中也都

有,唯一区别就是关闭方式中JDialog没有EXIT_ON_CLOSE。同时因为JDialog从属于JFrame,

所以当JFrame窗口关闭时,JDialog也会被关闭,反之不受影响。

构造函数

JDialog jdialog = new JDialog();
JDialog jdialog = new JDialog(Frame f);  //指定父窗口
JDialog jdialog = new JDialog(Frame f,String title);  //指定父窗口+标题

四、常用面板

        面板也是一种swing容器,他可以作为一个容器添加或容纳其他的组件,但是他也必须在一个

容器内。

1、JPanel

        JPanel就是一种最简单的面板,它继承于java.awt.Container类

JFrame jframe = new JFrame("标题");
jframe.setBounds(400,300,1200,1200);
jframe.setVisible(true);
JButton jb = new JButton("按钮");  //new两个按钮组件
JButton jb1 = new JButton("按钮1");
JPanel jp = new JPanel(new FlowLayout());  //生成一个面板

jp.add(jb);  //将两个按钮加入到面板中
jp.add(jb1);
jframe.add(jp);  //将面板加入到另外的容器中

2、JScrollPane

        JScrollPane是带滚动条的面板。因此,再碰到需要将一个大的组件放到一个较小的空间的时候,使用该面板。JScrollPane内只能添加一个组件,因此,如果需要将多个组件添加到一个JScrollPane中时,需要先将需要添加的组件添加到JPanel中,再将JPanel添加到JScrollPane中。

JFrame jframe = new JFrame("标题");
jframe.setBounds(400,300,1200,1200);
jframe.setVisible(true);
JButton jb = new JButton("按钮");
jb.setSize(800,200);  //设置按钮组件的尺寸
JScrollPane jp = new JScrollPane(jb);  //把按钮组件放在JScrollPane中
jframe.add(jp);

五、常用的组件

1、JLabel标签组件

        显示文本或提示信息

构造方法

JLabel jlabel = new JLabel();
JLabel jlabel = new JLabel(String str);  //设置文本
JLabel jlabel = new JLabel(Icon icon);  //设置图标
JLabel jlabel = new JLabel(String str,int aligment);  //设置文本+水平对齐方式(LEFT、CENTER、RIGHT)
JLabel jlabel = new JLabel(String str,Icon icon,int aligment);  //设置文本+图标+水平对齐方式
JFrame jf = new JFrame("标题");
jf.setBounds(400,300,1000,1000);
JLabel jl = new JLabel();
jl.setText("账号:");
jl.setFont(new Font("宋体",Font.PLAIN,30));  //设置标签的字体,尺寸等
jf.add(jl);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

2、JButton按钮组件

        构造方法

JButton jb = new JButton();
JButton jb = new JButton(String text);  //指定文字
JButton jb = new JButton(Icon icon);  //指定图标
JButton jb = new JButton(String text,Icon icon);  //指定文字+图标

        其他方法

setEnabled(boolean n);  //设置按钮是否可用
setBorderPainted(boolean n);  //设置边界是否显示,默认是显示的

       

        (1)单选按钮组件

                JRadioButton是一个单选按钮,需要将单选按钮加入到ButtonGroup按钮组中。

                

                构造方法

JRadioButton jrb = new JRadioButton();  
JRadioButton jrb = new JRadioButton(String text);  //指定文字
JRadioButton jrb = new JRadioButton(String text,boolean selected);  //指定文字+是否选中

                示例

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);
JRadioButton jrb = new JRadioButton("男");
JRadioButton jrb1 = new JRadioButton("女");
ButtonGroup bg = new ButtonGroup();
bg.add(jrb);
bg.add(jrb1);
jf.add(jrb);
jf.add(jrb1);

        

        (2)复选组件框

                JCheckBox

                

                构造方法

JCheckBox jb = new JCheckBox();
JCheckBox jb = new JCheckBox(String text,boolean checked);  //指定文字+是否被选中

                示例

JFrame jf = new JFrame("标题");
jf.setBounds(400,300,1000,1000);
JCheckBox jcb1 = new JCheckBox("篮球");
JCheckBox jcb1 = new JCheckBox("游戏");
JCheckBox jcb1 = new JCheckBox("睡觉");
JCheckBox jcb1 = new JCheckBox("学习");
jf.add(jcb1);
jf.add(jcb2);
jf.add(jcb3);
jf.add(jcb4);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        (3)下拉列表框组件

                

                构造方法

JComboBox jb = new JComboBox();

//addItem添加下拉内容

                示例

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JComboBox box = new JComboBox();
box.addItem("--请选择你的学历--");
box.addItem("高中");
box.addItem("大学");
box.addItem("研究生");
jf.add(box);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

3、菜单栏

        (1)创建菜单栏:JMenuBar

        (2)创建菜单:JMenu

        (3)创建菜单项:JMenuItem

//菜单项依附于菜单,菜单依附于菜单栏

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("菜单1");
JMenuItem item1 = new JMenuItem("菜单项1");
JMenuItem item2 = new JMenuItem("菜单项2");
JMenuItem item3 = new JMenuItem("菜单项3");
menu.add(item1);
menu.add(item2);
menu.add(item3);
bar.add(menu);
jf.add(bar);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

4、文本组件

构造函数

JTextField text = new JTextField();
JTextField text = new JTextField(String text);  //指定默认文字
JTextField text = new JTextField(int fieldWidth);  //指定文本框长度
JTextField text = new JTextField(String text,int fieldWidth);  //指定默认文字+文本框长度

示例

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JLabel label = new JLabel("账号");
JTextField text = new JTextField("请输入",20);
jf.add(lable);
jf.add(text);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

5、密码框组件

构造函数

JPasswordField pwd = new JPasswordField();
JPasswordField pwd = new JPasswordField(String str);  //指定默认文字
JPasswordField pwd = new JPasswordField(int fiedWidth);  //指定文本框长度
JPasswordField pwd = new JPasswordField(String str,int fiedWidth);  //指定默认文字+文本框长度

示例

//setEchoChar('*')  显示回显字符,默认·

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JLabel label = new JLabel("密码:");
JPasswordField text = new JPasswordField("请输入密码",20);
jf.add(lable);
jf.add(text);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

6、文本域组件

构造函数

JTextArea area = new JTextArea();
JTextArea area = new JTextArea(String text);  //指定默认文字
JTextArea area = new JTextArea(int rows,int cols);  //指定行+列

示例

//setLineWrap(boolean x);  设置文本域是否自动换行

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JTextArea area = new JTextArea(12,20);
jf.add(area);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

六、常用布局

1、流布局FlowLayout

        所有组件像流一样,一个一个排放,排满了一行之后就排下一行,默认情况下,每个组件是

居中排列的,但是也可以设置。

构造函数

FlowLayout fl = new FlowLayout();
FlowLayout fl = new FlowLayout(int aligment);  //设置对齐方式(默认FlowLayout.CENTER居中)

/**
*  aligment取值:
*  FlowLayout.LEFT = 0
*  FlowLayout.CENTER = 1
*  FlowLayout.RIGHT = 2
*/

示例

//一般都通过setLayout方法来设置布局,例如jf.setLayout(new FlowLayout(FlowLayout.LEFT));

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JButton jb = new JButton("A");
JButton jb1 = new JButton("B");
jf.add(jb);
jf.add(jb1);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

2、边界布局BorderLayout

        边界布局是默认的布局管理方式,边界布局将容器分为了北(BorderLayout.NORTH)、南

(BorderLayout.SORTH)、东(BorderLayout.EAST)、西(BorderLayout.WAST)、中

(BorderLayout.CENTER)5个区域。

示例

//再给JFrame容器add组件的时候,指定边界

JFrame jf = new JFrame("标题");
jf.setLayout(new BorderLayout());
jf.setBounds(400,300,1000,1000);

JButton jb = new JButton("中部");
JButton jb1 = new JButton("西部");
jf.add(jb,BorderLayout.CENTER);
jf.add(jb1,BorderLayout.WEST);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

3、网格布局

        网格布局是将容器分为网格。所有的组件都按照行和列排列,网格的个数由行数和列数决

定。每个组件会填满空格,改变容器的大小,组建的大小也会随之改变。

构造方法

GridLayout gl = new GridLayout(int rows,int columns);  //指定行数+列数
GridLayout gl = new GridLayout(int rows,int columns,int horizGap,int vertGap)  //指定行数+列数+水平间隔+垂直间隔

示例

JFrame jf = new JFrame("标题");
jf.setLayout(new GridLayout(2,2));
jf.setBounds(400,300,1000,1000);

JButton jb = new JButton("A");
JButton jb1 = new JButton("B");
JButton jb2 = new JButton("C");
JButton jb3 = new JButton("D");
jf.add(jb);
jf.add(jb1);
jf.add(jb2);
jf.add(jb3);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

七、常用的事件监听器

事件 监听接口 方法
动作事件监听器 ActionEvent ActionListener

addActionListener();

removeActionListener();

焦点事件监听器 FocusEvent FocusListener

addFocusListener();

removeFocusListener();

        使用步骤

(1)新建一个组件(如Button)

(2)将该组件添加到相应的容器(如JFrame)

(3)注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)

(4)定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)

        示例

JFrame jf = new JFrame("标题");
jf.setLayout(new FlowLayout());
jf.setBounds(400,300,1000,1000);

JButton jb = new JButton("A");
    jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
               此处重写方法,要让此按钮做什么
            }
        });

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

八、JTable

        JTable是表格组件,需要看成两个部分,表格的标题和表格的内容,但是真正操作这两部分

的是DefaultTableModel对象,而且操作完成后需要把JTable对象放进JPanel或JScrollPane面板等

容器里,所以他们的层次关系是:

        JScrollPane

                JTable

                        DefaultTableModel

猜你喜欢

转载自blog.csdn.net/weixin_64709241/article/details/125098387