一.问题描述
- 使用Swing组件做一个登录界面。要求有用户名、密码文本框及标签,两个按钮(登录和退出),并能够响应鼠标单击按钮事件,即当单击“登录”按钮时显示“登录成功”,单击“退出”按钮时退出程序。
二.解答:
package experiment;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @Author MarryAndy
* @date 2018/12/26 11:39
* @Version 1.0
*/
public class Test8_2 extends JFrame{
JPanel jp1,jp2,jp3;
JTextField jtf1;
JPasswordField jpf1;
JLabel jlb1,jlb2;
JButton jb1,jb2;
//用于接下来的判断
int TextLength = 10;
int PasswordLength = 10;
public Test8_2(){
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jlb1 = new JLabel("用户名(10位):");
jlb2 = new JLabel("密码(10位):");
jb1 = new JButton("登录");
jb2 = new JButton("退出");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(jtf1.getText().trim().length()==0||new String(jpf1.getPassword()).trim().length()==0){
//trim():用于删除头尾的空白符
JOptionPane.showMessageDialog(null,"用户名密码不允许为空","message",JOptionPane.ERROR_MESSAGE);
}
else if(jtf1.getText().trim().length() > TextLength||new String(jpf1.getPassword()).trim().length() > PasswordLength){
JOptionPane.showMessageDialog(null, "用户名或密码超出指定位数","message",JOptionPane.WARNING_MESSAGE);
}
else if(jtf1.getText().trim().equals("Andy")&&new String(jpf1.getPassword()).trim().equals("1212")){
JOptionPane.showMessageDialog(null, "登录成功");
}
else{
JOptionPane.showMessageDialog(null, "用户名或密码错误","message",JOptionPane.QUESTION_MESSAGE);
}
}
});
jb2.addActionListener(new ActionListener() {
//设置监听
@Override
public void actionPerformed(ActionEvent e) {
dispose();
//关闭窗口释放屏幕资源
}
});
//设计对话框及密码框的长度
jtf1 = new JTextField(10);
jpf1 = new JPasswordField(10);
this.setLayout(new GridLayout(3,1));
//采用网格布局三行一列
//此JFrame加入三个JPanel
this.add(jp1);
this.add(jp2);
this.add(jp3);
//第一个JPanel加入JLabel和JTextField
jp1.add(jlb1);
jp1.add(jtf1);
//第二个JPanel加入JLabel和JPasswordField
jp2.add(jlb2);
jp2.add(jpf1);
//第三个JPanel加入两个JButton
jp3.add(jb1);
jp3.add(jb2);
this.setTitle("登录界面");
this.setSize(411,184);
this.setLocation(500, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置界面和虚拟机一起关闭
this.setVisible(true);
//设置界面可显示
}
public static void main(String[] args) {
Test8_2 q = new Test8_2();
}
}
三.截图
参考:
java中对话框弹出的多种方式
https://www.cnblogs.com/jiangxiulian/p/5961990.html
JavaGUI——swing组件基础(二)文本框/密码框/标签组件
https://blog.csdn.net/weixin_42247720/article/details/80480287
弹出对话框的图标选择
https://www.cnblogs.com/guohaoyu110/p/6440333.html