java Swing复习笔记

JavaSwing笔记

1.0快速入门

1.1JFrame窗口

1.1.1JFrame下的常用方法

setSize(int width, int height) 用来设置窗口大小尺寸width代表长,height代表高
setLocation(int x, int y) 用来设置窗口位置,x代表水平位置,y代表垂直位置,左上角为起点
setBounds(int x, int y, int width, int height) x代表水平位置,y代表垂直位置,左上角为起点,width代表长,height代表高
setResizable(false) 代表窗口尺寸大小不可变,如果不设置的话默认为true,表示窗口尺寸可以变化
setVisible(true) 代表窗口可见
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE) 设置x代表关闭
new JFrame(“标题”) 使用参数时参数代表标题
setTitle(String title) 使用new JFrame()空参创建窗口时,可以使用setTitle(String title)方法来设置标题
使用JFrame搭建一个窗口

public class SwingDemo1 {
    public static void main(String[] args) {
        //父框架面板
        JFrame jf=new JFrame("JFrame");
        jf.setSize(400,250);
        jf.setLocation(400,400);
        jf.setResizable(false);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

1.2JDialog子窗口

JDialog是JFrame下的子框架,其使用方法和JFrame类似,需要注意的是,父框架关闭子框架也会被关闭

public class SwingDemo1 {
    public static void main(String[] args) {
        //父框架面板
        JFrame jf=new JFrame("JFrame");
        jf.setSize(400,250);
        jf.setLocation(400,400);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //子框架面板
        JDialog jd=new JDialog(jf,"JDialog");
        jd.setSize(200,100);
        jd.setLocation(450,500);
        jd.setVisible(true);
        jd.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.3JButton按钮

创建一个JButton按钮,创建一个JPanel面板,将JPanel面板添加到JFrame窗口中,将JButton按钮添加到JPanel面板中
注意: jf.setVisible(true);要设置在最后,不然初始化窗口时可能看不见按钮

public class SwingDemo2 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("按钮");
        jf.setBounds(400,300,400,250);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JButton jb1=new JButton("按钮1");
        JButton jb2=new JButton("按钮2");
        JPanel jp=new JPanel(new FlowLayout());
        jp.add(jb1);
        jp.add(jb2);
        jf.add(jp);
        jf.setVisible(true);
    }
}

截图如下:
在这里插入图片描述

1.4JLabel标签

用来设置文本标签

public class SwingDemo3 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("JLabel标签");
        jf.setBounds(400,300,600,400);
        JLabel jl1=new JLabel("账号:",SwingConstants.LEFT);
        JLabel jl2=new JLabel("密码:",SwingConstants.LEFT);
        JPanel jp=new JPanel(null);
        jl1.setBounds(0,0,50,20);
        jl2.setBounds(0,20,50,20);
        jp.add(jl1);
        jp.add(jl2);
        jf.add(jp);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.5常用的三种按钮-JRadioButton,JCheckBox,JComboBox

常用的三种按钮有单选按钮,复选按钮,下拉选项按钮
示例如下:

public class SwingDemo4 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("按钮");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setBounds(400,300,600,400);
        //以下为单选按钮
        JRadioButton jrb1=new JRadioButton("男");
        JRadioButton jrb2=new JRadioButton("女");
        ButtonGroup bg=new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);
        jf.add(jrb1);
        jf.add(jrb2);
        //以下为多选按钮
        JCheckBox jcb1=new JCheckBox("睡觉",true);
        JCheckBox jcb2=new JCheckBox("吃饭",false);
        JCheckBox jcb3=new JCheckBox("打游戏",false);
        JCheckBox jcb4=new JCheckBox("看书",false);
        jf.add(jcb1);
        jf.add(jcb2);
        jf.add(jcb3);
        jf.add(jcb4);
        //以下为下拉选项按钮
        JComboBox cb=new JComboBox();
        cb.addItem("--学历选择--");
        cb.addItem("--高中--");
        cb.addItem("--本科--");
        cb.addItem("--研究生--");
        jf.add(cb);
        //最后设置窗口可见
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.6JMenuBar菜单栏

常用的菜单栏设置如下
示例代码如下:

public class SwingDemo5 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("菜单栏");
        jf.setBounds(400,300,600,400);
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        //设置一个菜单栏
        JMenuBar mr=new JMenuBar();
        //菜单选项
        JMenu menu=new JMenu("File");
        JMenu menu1=new JMenu("Edit");
        JMenu menu2=new JMenu("View");
        //菜单下的选项
        JMenuItem item1=new JMenuItem("New");
        JMenuItem item2=new JMenuItem("Open");
        JMenuItem item3=new JMenuItem("Setting");
        JMenuItem item4=new JMenuItem("Cut");
        JMenuItem item5=new JMenuItem("Copy");
        JMenuItem item6=new JMenuItem("Tool Window");
        JMenuItem item7=new JMenuItem("Show Siblings");
        mr.add(menu);
        mr.add(menu1);
        mr.add(menu2);
        menu.add(item1);
        menu.add(item2);
        menu.add(item3);
        menu1.add(item4);
        menu1.add(item5);
        menu2.add(item6);
        menu2.add(item7);
        jf.add(mr);

        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.7JTextField文本框

用来设置单行文字框

public class SwingDemo6 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("文本");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setBounds(400,300,350,200);
        jf.setResizable(false);     //窗口大小不可变
        JLabel jl1=new JLabel("账号:");
        JTextField textField1=new JTextField("请输入账号",22);
        JLabel jl2=new JLabel("密码:");
        JPasswordField passwordField=new JPasswordField(22);
        jf.add(jl1);
        jf.add(textField1);
        jf.add(jl2);
        jf.add(passwordField);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.8JTextArea文本域

多行文本框
public JTextArea(int rows, int columns) 中rows代表行,columns代表列
setLineWrap(true) true代表自动换行,如果设置不设置的话默认为false,代表不自动换行,如果长度超过列数文本框将继续在同一行输出,文本框长度增大

public class SwingDemo7 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("文本域");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setBounds(400,300,400,200);
        JTextArea textArea=new JTextArea(20,5);
        textArea.setLineWrap(true);     //自动换行
        jf.add(textArea);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }
}

截图如下:
在这里插入图片描述

1.9addActionListener事件

事件,设置发送消息按钮触发事件,单机一次将在文本域中追加输出一行文字

public class SwingDemo8 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("事件");
        jf.setBounds(400,300,600,400);
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        JTextArea ta=new JTextArea(20,20);
        ta.setLineWrap(true);
        JButton jb=new JButton();
        jb.setText("发送消息");
        jb.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ta.append("你好啊,年轻人\n");
            }
        });
        jf.add(ta);
        jf.add(jb);

        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:
在这里插入图片描述

1.10连接数据库

在登录按钮中添加事件,查询数据库

//查询数据库登录
public class SwingDemo9 {
    public static void main(String[] args) {
        JFrame jf=new JFrame("登录");
        jf.setBounds(400,300,300,250);
        jf.setResizable(false);
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        JLabel jLabel1=new JLabel("账号:");
        JTextField un=new JTextField("",20);
        JLabel jLabel2=new JLabel("密码:");
        JPasswordField pwd=new JPasswordField("",20);
        pwd.setEchoChar('*');
        JLabel state=new JLabel("登录状态");
        JButton jb=new JButton("登录");
        jb.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Connection connection = null;
                Statement statement = null;
                ResultSet rs=null;
                try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    String url="jdbc:mysql://localhost:3306/testdb";
                    String username="root";
                    String password="root";
                    connection= DriverManager.getConnection(url,username,password);
                    statement=connection.createStatement();
                    String sql="SELECT name,password From user";
                    rs=statement.executeQuery(sql);
                    boolean flag=false;
                    while(rs.next()){
                        if(rs.getString(1).equals(un.getText())&&rs.getString(2).equals(pwd.getText())){
                            flag=true;
                            state.setText("登录成功");
                            break;
                        }
                    }
                    if(flag==false){
                        state.setText("登录失败");
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }finally {
                    if(rs!=null){
                        try {
                            rs.close();
                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        }
                    }
                    if(statement!=null){
                        try {
                            statement.close();
                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        }
                    }
                    if(connection!=null){
                        try {
                            connection.close();
                        } catch (SQLException ex) {
                            ex.printStackTrace();
                        }
                    }
                }
            }
        });
        jf.add(jLabel1);
        jf.add(un);
        jf.add(jLabel2);
        jf.add(pwd);
        jf.add(state);
        jf.add(jb);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

截图如下:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值