Swing(一)和手写登陆界面


首先了解:

JFrame是窗口,JPanel是面板,JFrame中的面板是默认的面板,窗口中的面板默认布局是边界布局,新建的面板默认布局为流式布局,根据需要更改布局或者不用更改布局。

常用布局:边界布局、网格布局、绝对布局。

手写登陆界面:

import javax.swing.JFrame;

public class LoginFrame extends JFrame{
	
	//在构造方法中设置容器的基本属性以及初始化工作
	public LoginFrame() {
		this.setTitle("登陆界面");//窗口标题
		this.setSize(600,400);//窗口大小
		this.setLocationRelativeTo(null);//设置窗口在屏幕居中
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗口右上角关闭按钮直接退出
		this.setResizable(false);//设置窗口不能缩放
		//创建一个面板,在新建的面板上装组件,代码分块,便于管理
		LoginPanel loginPanel = new LoginPanel();
		this.add(loginPanel);
	}
	public static void main(String[] args) {
		LoginFrame loginFrame = new LoginFrame();
		loginFrame.setVisible(true);
	}
}

新建的面板:

/*
 * swing界面设计步骤:
 * 1.创建一个普通的类,继承想要的容器
 * 2.在构造方法中设置容器的基本属性以及初始化工作
 * 3.声明已知的组件,需要的时候再补
 * 4.创建组件
 * 5.布局组件
 * 6.添加监听器
 * 7.设置组件样式
 */
public class LoginPanel extends JPanel{	//1.创建一个普通的类,继承想要的容器
	//3.声明已知的组件,需要时再补
	private JLabel jLabel;
	private JTextField jTextField;
	private JLabel jLabel2;
	private JPasswordField jPasswordField;
	private JButton jButton;
	private JButton jButton2;
	private JLabel jLabel3;
	
	//2.在构造方法中设置容器的基本属性以及初始化工作
	public LoginPanel() {
		this.setLayout(null);//设置面板布局为绝对布局
		this.initComponents();
		this.layoutComponents();
		this.listener();
		this.setStyle();
	}
	//4.创建组件
	public void initComponents() {
		jLabel = new JLabel("用户名:");
		jTextField = new JTextField();
		jLabel2 = new JLabel("密码:");
		jPasswordField = new JPasswordField();
		jButton = new JButton("登陆");
		jButton2 = new JButton("重置");
		jLabel3 = new JLabel();
	}
	//5.布局组件
	public void layoutComponents() {
		jLabel.setBounds(130, 60, 80, 30);
		this.add(jLabel);
		
		jTextField.setBounds(210,60,250,30);
		this.add(jTextField);
		
		jLabel2.setBounds(130, 130, 80, 30);
		this.add(jLabel2);
		
		jPasswordField.setBounds(210,130,250,30);
		this.add(jPasswordField);
		
		jButton.setBounds(180,200,90,30);
		this.add(jButton);
		
		jButton2.setBounds(320,200,90,30);
		this.add(jButton2);
		
		jLabel3.setBounds(200, 270, 200, 30);
		this.add(jLabel3);
	}
	//6.添加监听器
	public void listener() {
		jButton.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				if(jTextField.getText().equals("admin")&&String.valueOf(jPasswordField.getPassword()).equals("123456")) {
					JOptionPane.showMessageDialog(null, "登陆成功");
				}else {
					jLabel3.setText("登陆失败");
					jLabel3.setVisible(true);
				}
			}
		});
		jButton2.addActionListener(new ActionListener() {	
			@Override
			public void actionPerformed(ActionEvent e) {
				jTextField.setText("");
				jPasswordField.setText("");
				jLabel3.setText("");
				jLabel3.setVisible(false);
			}
		});
	}
	//7.设置组件样式
	public void setStyle() {
		//设置16进制颜色
        String color="#1E9FFF";
        int i=Integer.parseInt(color.substring(1),16);
        Color c = new Color(i);
        
        jButton.setFont(new Font("楷体", Font.PLAIN, 20));
        jButton2.setFont(new Font("楷体", Font.PLAIN, 20));
		
        jLabel3.setHorizontalAlignment(SwingConstants.CENTER);//文本在组件居中
        jLabel3.setBorder(BorderFactory.createLineBorder(c));
        jLabel3.setFont(new Font("微软雅黑", Font.PLAIN, 20));
        jLabel3.setVisible(false);
        
	}
}