浅用Java组件创建登录窗口
由于Swing具有跨平台的优势,其界面组件可以在多种操作系统中运行,而且在不同操作系统中的外观和行为都是一致的,同时swing在awt包的基础上还拓展了其他功能,使得能创建出更为丰富的界面。所以下面代码大多使用swing包下的模块
导包
导包注意不要导入一些不必要的模块,会拖慢Java的执行速度
import java.awt.Color;
import java.awt.Font;
import javax.swing.*;
创建login类
创建login类,同时将类中出现的组件变成类的成员属性
class Login extends JFrame {
JPanel jp;
JLabel label;
JTextArea ta1,ta2;
JTextField tf;
JPasswordField pw;
JCheckBox ck1,ck2;
JButton jb;
}
构造方法
创建构造方法,即创建对象便生成所需组件
public Login(){
setTitle("Login");
setSize(400, 400); // 设置大小
setLocation(500, 200); // 设置在父级窗口的位置 即相对位置
setDefaultCloseOperation(3); // 设置默认关闭窗口的模式
init();
setVisible(true); // 设置窗口可视
setResizable(false); //设置不可改变窗口大小以保证组键的位置不发生变化
}
将其他组件分开,避免代码看起来冗余,难以理解
在添加布局时,我这里使用的是null,这样可以准确定位组件的位置,当然也可以用其它布局,如boxLayout布局,通过其静态方法createHorizontalBox()来获得一个行型盒子或createVerticalBox()来或的一个列型盒子,盒子间可以相互嵌套。具体的方法另查。
void init(){
jp = new JPanel(); //设置内容面板
add(jp); // 窗口添加面板
jp.setBackground(Color.white); //背景为白色
jp.setLayout(null); // 将layout设置为null, 即可用setBounds来定位组件的位置
// 创建标题标签
// JTextArea label = new JTextArea("LOGIN");
label = new JLabel("LOGIN1");
label.setBounds(125,20,150,50);
label.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体格式
jp.add(label);
// 创建文本区
Font font = new Font("宋体",Font.BOLD,20);
ta1 = new JTextArea("账号");
ta1.setFont(font);
ta1.setBounds(50,100,50,50);
ta2 = new JTextArea("密码");
ta2.setFont(font);
ta2.setBounds(50,160,50,50);
//文本框
tf = new JTextField();
tf.setBounds(110,100,200,30);
// tf.addActionListener(new getValues());
//密码框
pw = new JPasswordField();
pw.setBounds(110,160,200,30);
// pw.addActionListener(new getValues());
// 复选框
JCheckBox cb1 = new JCheckBox("自动登录");
cb1.setBounds(50,210,100,30);
cb1.setBackground(Color.white);
JCheckBox cb2 = new JCheckBox("记住密码");
cb2.setBounds(240,210,100,30);
cb2.setBackground(Color.white);
// 创建登录按钮键
jb = new JButton("登 录");
jb.setFont(font); //字体设置
Color color = new Color(76,190,240);
jb.setBounds(50,260,260,40);
jb.setBackground(color);
//往内容面板添加组件
jp.add(ta1);jp.add(tf);jp.add(ta2);jp.add(pw);
jp.add(cb1);jp.add(cb2);jp.add(jb);
创建main类
创建main类,调试login类,观察是否可用
public class Main{
public static void main(String[] args) {
Login login = new Login();
}
}
代码运行结果
附言
以下代码仅仅创建出一个登录的框架,并无任何的事件处理。如需添加事件处理,可运行以下代码,运行可在控制台上打印出输入框输入的值
import java.awt.event.*;
// 创建监听类实现ActionListener接口
class getValues implements ActionListener{
Login login ;
void setUp(Login login) {
this.login = login;
}
public void actionPerformed(ActionEvent e) {
String user = login.tf.getText();
String password = String.valueOf(login.pw.getPassword());
System.out.println("user:"+user+"\npassword:"+password);
}
}
// 如点击按钮时,触发事件,输出框内的值
// 在构造函数中 的按钮组件后添加以下代码
getValues listen = new getValues();
listen.setUp(this); // 添加对象
jb.addActionListener(listen); // 点击组件触发事件
ActionListener事件的其他方法另查java api