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);
	}
}

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);
	}
}

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);
		
	}
}

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); 
	}
}

4:容器定义

存放其他控件的控件

– 窗体 面板

可以将控件添加到容器中

– add方法

容器也可以加到容器中

– add方法

功效

– 分组管理控件

javax.swing包

常见容器

JFrame

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

JPanel

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

JScrollPane

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

猜你喜欢

转载自blog.csdn.net/X131644/article/details/125418567
今日推荐