• java图像化界面GUI(swing)学习讲解


    同款课程连接:

    https://www.bilibili.com/video/BV1HJ411q7jW?p=3&vd_source=a55a729a8abbc793a24a2504a9067a76

    1:设置第一个窗口

    package ja615;
    
    import javax.swing.JFrame;
    public class WidonwRun {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		FirstWindow first=new FirstWindow();
    	}
    }
    
    class FirstWindow extends JFrame{
    	public FirstWindow() {
    		init();
    	}
    	public void init() {
    		setTitle("first window");
    		setSize(400,200);
    		setLocation(20,20);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setVisible(true);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2登录窗体的设计与实现

    package ja615;
    
    import javax.swing.*;
    public class WidonwRun {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		LoginFrame first=new LoginFrame();
    		
    	}
    }
    
    class LoginFrame extends JFrame{
    	private JTextField txtUser;//用户名
    	private JPasswordField txtPwd;
    	private JLabel lblUser, lblPwd;
    	private JButton btnOk,btnExit;
    	 LoginFrame() {
    		init();
    	}
    	public void init() {
    		lblUser =new JLabel("用户名");  //标签
    		lblPwd =new JLabel("密码");
    		lblUser.setBounds(20, 20, 60, 20);  //设置控件的位置以及大小
    		lblPwd.setBounds(20, 50, 60, 20);
    		setLayout(null);   //设置布局管理为null
    		txtUser=new JTextField(10);  //  输入文本框
    		txtPwd=new JPasswordField(10);
    		txtUser.setBounds(80, 20, 100, 20);   //设置文本框   x,y,长.高
    		txtPwd.setBounds(80, 50, 100, 20);
    		
    		JButton btnOK =new JButton("确定");
    		JButton btnExit= new JButton("取消");
    		btnOK.setBounds(60, 100, 60, 20);
    		btnExit.setBounds(125, 100, 60, 20);
    		
    		add(lblUser);
    		add(lblPwd);
    		add(txtUser);
    		add(txtPwd);
    		add(btnOK);
    		add(btnExit);
    		setBounds(1,1,250,200);
    		setTitle("登录窗体");
    		setVisible(true);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    3:常用控件类介绍

    使用控件对应的类创建对象
    例如: Jlabel(标签) JButtton(按钮) JTextFiled(文本)

    控件的共同特性: 所有控件都继承Jcomponent类
    共同方法:
    1:setText();
    2:getText();
    3:setbounds(x,y,width,length);

    package demo;
    
    import java.awt.Color;
    import javax.swing.*;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		LoginFrame login=new LoginFrame();
    	}
    
    }
    
    class LoginFrame extends JFrame{
    	private JTextField txtUser;//用户名
    	private JPasswordField txtPwd;
    	private JLabel lblUser,lblPwd;
    	private JButton btnOK,btnExit;
    	private JRadioButton rb1,rb2;  //声明我的单选钮对象
    	public LoginFrame() {
    		init();
    	}
    	public void init() {
    		lblUser=new JLabel("用户名");  //标签
    		lblPwd =new JLabel("密码");
    		lblUser.setBounds(20, 20, 60, 20);
    		lblPwd.setBounds(20, 50, 60, 20);
    		setLayout(null);
    		txtUser=new JTextField(10);
    		txtPwd=new JPasswordField(10);
    		txtUser.setBounds(80,20,100,20);
    		txtPwd.setBounds(80,50,100,20);
    		
    		rb1=new JRadioButton("管理员",false);  //创建单选按钮对象
    		rb1.setBounds(20, 70, 80, 20);
    		rb2=new JRadioButton("普通会员",false);
    		rb2.setBounds(80, 70, 80, 20);
    		btnOK =new JButton("确定");
    		
    		btnExit=new JButton("取消");
    		btnOK.setBounds(60, 100, 60, 20);
    		btnExit.setBounds(125, 100, 60, 20);
    		
    		add(lblUser);
    		add(lblPwd);
    		add(txtUser);
    		add(txtPwd);
    		add(rb1);
    		add(rb2);
    		add(btnExit);
    		add(btnOK);
    		setBounds(1,1,250,200);
    		setTitle("登录窗体");
    		setVisible(true);
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    4:事件处理程序

    谁产生事件

    –源对象

    确定谁去处理事件

    –监听者
    –实现事件处理监听接口
    –完成事件处理方法

    源对象添加事件的监听器对象

    package demo;
    
    import java.awt.Color;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import javax.swing.*;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		LoginFrameWithAction login=new LoginFrameWithAction();
    	}
    
    }
    
    class LoginFrameWithAction extends JFrame implements ActionListener{
    	private JTextField txtUser;//用户名
    	private JPasswordField txtPwd;
    	private JLabel lblUser,lblPwd;
    	private JButton btnOK,btnExit;
    	private JRadioButton rb1,rb2;  //声明我的单选钮对象
    	public LoginFrameWithAction() {
    		init();
    	}
    	public void init() {
    		lblUser=new JLabel("用户名");  //标签
    		lblPwd =new JLabel("密码");
    		lblUser.setBounds(20, 20, 60, 20);
    		lblPwd.setBounds(20, 50, 60, 20);
    		setLayout(null);
    		txtUser=new JTextField(10);
    		txtPwd=new JPasswordField(10);
    		txtUser.setBounds(80,20,100,20);
    		txtPwd.setBounds(80,50,100,20);
    		
    		rb1=new JRadioButton("管理员",false);  //创建单选按钮对象
    		rb1.setBounds(20, 70, 80, 20);
    		rb2=new JRadioButton("普通会员",false);
    		rb2.setBounds(80, 70, 80, 20);
    		btnOK =new JButton("确定");
    		//给按钮添加事件监听器对象
    		btnOK.addActionListener(new ActionListener() {
    			
    			@Override
    			public void	actionPerformed(ActionEvent arg0) {
    				String re="";
    				if(txtUser.getText().equals("abc")&&txtPwd.getText().equals("123456"))
    					re="登录成功";
    				else
    					re="用户名密码错误";
    				JOptionPane.showMessageDialog(LoginFrameWithAction.this,re);
    			}
    		});  //匿名类实现ActionListener接口
    		
    		
    		
    		btnExit=new JButton("取消");
    		btnOK.setBounds(60, 100, 60, 20);
    		btnExit.setBounds(125, 100, 60, 20);
    		btnExit.addActionListener(this);
    		
    		add(lblUser);
    		add(lblPwd);
    		add(txtUser);
    		add(txtPwd);
    		add(rb1);
    		add(rb2);
    		add(btnExit);
    		add(btnOK);
    		setBounds(1,1,250,200);
    		setTitle("登录窗体");
    		setVisible(true);
    	}
    	
    	public void actionPerformed(ActionEvent e) {
            String re= "美羊羊,大傻逼";	
    		JOptionPane.showMessageDialog(LoginFrameWithAction.this,re);
    		System.exit(0); 
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    4:容器定义

    存放其他控件的控件

    – 窗体 面板

    可以将控件添加到容器中

    – add方法

    容器也可以加到容器中

    – add方法

    功效

    – 分组管理控件

    javax.swing包

    常见容器

    JFrame

    1.扩展java.awt.Frame类
    2:用于在Swing程序中创建窗口
    3.包含边框,标题和用于关闭和图标化的按钮

    JPanel

    1.中间容器
    2:将较小的轻量级容器组合在一起
    3.与内容窗格相似,面板在默认情况下不透明

    JScrollPane

    1.有滚动条,进行滚动管理

  • 相关阅读:
    C++ 函数传递数组
    基于Qt 多线程(继承 QObject 的线程)
    通讯网关软件012——利用CommGate X2OPC实现MS SQL数据写入OPC Server
    数据库优化
    最新,2022年JCR正式发布(附影响因子名单下载)
    链表的有序构建和查找
    error: tool or SDK not found:
    RabbitMQ详解(上)
    【Kubernetes | Pod 系列】Pod 的基本管理(1)——对 Pod 的创建
    镉系量子点 CdSe/ZnS QDs,硒化镉/硫化锌量子点(油溶性)
  • 原文地址:https://blog.csdn.net/X131644/article/details/125418567