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