用到的标题包
字体 - java.awt.Font
窗口布局管理 - java.awt.GridLayout;
事件 - java.awt.event.ActionEvent
事件监听 - java.awt.event.ActionListener
窗口事件 - java.awt.event.WindowEvent
监听窗口 - java.awt.event.WindowListener
窗口 - javax.swing.JFrame
标签 - javax.swing.JLabel
面板 - javax.swing.JPanel
按钮 - javax.swing.JButton
单行文本输入框 - javax.swing.JTextField
密码输入框 - javax.swing.JPasswordField
代码用到的知识点
1.匿名内部类
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==but) {
System.exit(1);
}
}
});
代码
/*用到的包已经在上方写出,此处省略*/
//登录成功的弹出窗口
class LoginYes{
private JFrame frame=new JFrame("确认窗口");//实例化弹窗
private JLabel lab=new JLabel("登录成功");//实例化标签
private JButton but=new JButton("确认");//实例化按钮
public LoginYes() {//构造无参函数
//实例化字体宋体,倾斜,加粗
Font fnt=new Font("宋体",Font.ITALIC+Font.BOLD,20);
lab.setFont(fnt);//设置标签字体
but.setFont(fnt);//设置按钮字体
but.addActionListener(new ActionListener() {//按钮监听的事件
public void actionPerformed(ActionEvent e) {
if(e.getSource()==but) {
System.exit(1);
}
}
});
frame.addWindowListener(new WindowAdapter() {//窗口的事件
//此处用到的是窗口事件的一个监听适配器
//只实现了关闭窗口的监听接口
public void windowClosing(WindowEvent e) {
System.exit(1);//直接退出程序
}
});
frame.setLayout(new GridLayout(2,1));//分上下两个空位
frame.add(lab);//第一个空位加入标签
frame.add(but);//第二个空位加入按钮
frame.pack();//自适应窗口大小
frame.setLocation(300,300);//窗口输出的位置
frame.setVisible(true);//窗口可见
}
}
/*登录确认*/
class LoginCheck{//账号密码的比较
private String name;//账号
private String password;//密码
public LoginCheck(String name,String password) {//构造类,初始化账号密码
this.password=password;
this.name=name;
}
public boolean validate() {//判断账号密码是否正确
if("moster".equals(name)&&"passwd".equals(this.password)) {
return true;
}
return false;
}
}
//登录窗口
class ActionHandle1{
private JFrame frame=new JFrame("三体世界登录器");//实例化主窗口
private JPanel pan=new JPanel();//实例化面板
private JButton but=new JButton("登录");//实例化登录按钮
private JTextField text=new JTextField();//实例化用于输入文字的单行文本框
private JPasswordField pass=new JPasswordField();//实例化密码框
public ActionHandle1(){//构造类
//字体实例化,宋体,加粗,倾斜
Font fnt=new Font("宋体",Font.BOLD+Font.ITALIC,20);
but.setFont(fnt);//按钮加入字体
but.addActionListener(new ActionListener() {//按钮监听(用了匿名内部类)
public void actionPerformed(ActionEvent e) {
if(e.getSource()==but) {
LoginCheck login=new LoginCheck(text.getText(), pass.getText());
System.out.println(text.getText());
System.out.println(pass.getText());
if(login.validate()==true) {
frame.setVisible(false);//隐藏主窗口
new LoginYes();//实例化登录成功的弹出窗口
}
}
}
});
frame.addWindowListener(new WindowAdapter() {//窗口事件(匿名内部类,适配器)
public void windowClosing(WindowEvent e) {//点击窗口的关闭按钮时
System.exit(1);//结束程序
}
});
frame.setLayout(new GridLayout(2,1));//分出两行一列
pan.setLayout(new GridLayout(2,2));//分出两行两列
pan.add(new JLabel("姓名:"));//面板第一行第一列加入姓名标签
pan.add(text);//面板第一行第二列加入文本输入框类
pan.add(new JLabel("密码:"));//面板二行第一列加入密码标签
pan.add(pass);//面板第二行第二列加入密码输入框类
frame.add(pan);//窗口第一行加入刚才的面板
frame.add(but);//窗口第二行加入登录按钮
frame.setSize(300,100);//窗口宽300px,高100px
frame.setLocation(300,300);//窗口的输出位置
frame.setVisible(true);//窗口可视
}
}
//主方法
public class Register {
public static void main(String[] args) {
new ActionHandle1();//实例化登录窗口
}
}
难点
较为基础没有难点~