使用Java awt 及 Swing 组件编写一个简单的JFrame登陆注册界面。
示例:
下面开始介绍如何编写。
通过调用实例化一个JFrame框架,在框架内嵌入JPanel,在JPanel上进行添加控件。
package com.main.frame;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.*;
public class Login {
public static void main(String[] args) {
JFrame f1 = new JFrame();
f1.setTitle("欢迎登陆");
f1.setBounds(400, 200, 400, 270);
f1.setResizable(false);
f1.invalidate(); // 保证组件是有效的布局
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 实例化各组件
Container con = f1.getContentPane(); //生成一个容器
con.setLayout(new GridLayout(7,1)); //设置容器布局
JLabel welcome = new JLabel("欢迎登陆本系统");
JLabel usname = new JLabel();
JLabel paswd = new JLabel();
JTextField text1 = new JTextField(12);
JPasswordField text2 = new JPasswordField(12);
JButton login = new JButton("登陆");
JButton regist = new JButton("注册");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
//调用FocusListener方法,获取鼠标焦点,实现提示功能。
text1.addFocusListener(new Tip(text1,"请输入账号:"));
text2.addFocusListener(new Tip(text2, "请输入密码:"));
welcome.setFont(new Font("宋体", Font.BOLD, 20));
p1.add(welcome);
con.add(p1);
usname.setText("账号:");
paswd.setText("密码:");
p2.add(usname);
p2.add(text1);
con.add(p2);
p3.add(paswd);
p3.add(text2);
con.add(p3);
p4.add(login);
login.addActionListener(new LoginAc());
p4.add(regist);
con.add(p4);
f1.setVisible(true);
}
}
下面是FocusListener的代码。新建一个类。
package com.main.frame;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JTextField;
public class Tip implements FocusListener{
private String hindentext;
private JTextField textField;
public Tip(JTextField jtextfield,String hindentext) {
this.hindentext = hindentext;
this.textField = jtextfield;
jtextfield.setText(hindentext);
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
String temp = textField.getText();
if(temp.equals(hindentext)) {
textField.setText("");
}
}
@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub
String temp = textField.getText();
if(temp.equals("")) {
textField.setText(hindentext);
}
}
}
简单的登陆界面就实现了,如果需要实现点击登陆注册按钮,还需要监听事件。
见下一篇文章。
经过测试,我发现,JPassword因为有提示所以不能进行检测是否输入了密码。所以我为了检测用户是否输入了用户名与密码,我把JPassword和JTextField都换成了TextField。这样就解决了检测用户是否完成输入的问题了。详情见下篇文章会进行演示。(点击这里)