Java学习日记:UI篇(2)
~~~~~~~
上次只是制作了一个界面,界面中的按钮并不能进行操作,这一次我们将运用监听器、接口,让我们的按钮工作起来。我们会用到ActionListener这个接口(用于接收操作事件的侦听器接口)。
~~~~~~~
首先我们需要写一个类,来使用接口。`格式:public class 类名 implements {}。示例(我们要用到的ActionListener):public class LoginUIListener implements ActionListener{}。然后我们需要去到这个接口的文档里面将它的方法全部复制过来,然后进行重写,写成我们需要的方法。
下面是我需要用到的接口示例:
package uL;
/*
*只是用作测试学习,所以很不完善,很多东西没有加进来
*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginUIListener implements ActionListener{
//传值,获取账号,密码,在这里新建空白的pwdField以及zhanghaoField是为了能让界面类里面的这两个参数与这里的值相同,实现传参目的
JTextField zhanghaoField;
JPasswordField pwdField;
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String btnstr = e.getActionCommand();//获取按钮的信息,用于接下来的对比
if(btnstr.equals("登录")) {//比对按钮信息
if(zhanghaoField.getText().equals("123")&&pwdField.getText().equals("123")) {//密码,账号均为123,这里先加个打印输入,之后可以在这里调用新的页面,实现页面跳转
System.out.println(btnstr);
}
}
else if(btnstr.equals("注册")){ //留待补充
}
}
}
以上便是接口类,接下来我们回到上一次的登录界面里去实现这个接口类:
//实例化监听接口
LoginUIListener lul =new LoginUIListener();
//为按钮绑定监听器
loginBtn.addActionListener(lul);
regitBtn.addActionListener(lul);
//向LoginUIListener传值
lul.zhanghaoField =zhanghaoField;
lul.pwdField =pwdField;
通过这一段代码我们就可以实现按钮动作的监听。
放上登录界面的全部代码:
package uL;
import java.awt.Dimension;
import java.awt.FlowLayout;//流体布局
import java.awt.event.ContainerListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;//窗体
import javax.swing.JLabel;//标签
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//定义类
public class LoginUI{
//主函数
public static void main(String[] args){
LoginUI LUI= new LoginUI();
LUI.ShowMyUI();
}
public void ShowMyUI() {
//初始化界面
JFrame LoginJF = new JFrame();
LoginJF.setTitle("QQ");
LoginJF.setSize(600,450);
LoginJF.setLocationRelativeTo(null);
LoginJF.setDefaultCloseOperation(3);
LoginJF.setResizable(false);//窗体大小默认不可变
// 规则 布局-流式布局(居中, 按照添加的顺序从左至右从上至下摆放) -- 按钮 - 遵从JFrame默认的边框布局
FlowLayout fl =new FlowLayout();
LoginJF.setLayout(fl);
//文字 -- 图片 —— 标签
ImageIcon imgIcon = new ImageIcon("E:\\study\\JAVA\\May-23-study\\src\\uL\\image\\UI-1.png");//绝对路径的图片
JLabel imgJL =new JLabel(imgIcon);
JLabel zhanghaoJL =new JLabel("账号:");
JLabel pwdJL = new JLabel("密码:");
JLabel blankJL1 =new JLabel();
JLabel blankJL2 =new JLabel();
JLabel blankJL3 =new JLabel();
JLabel blankJL4 =new JLabel();
JLabel blankJL5 =new JLabel();
JLabel blankJL6 =new JLabel();
JLabel blankJL7 =new JLabel();
JLabel blankJL8 =new JLabel();
JTextField zhanghaoField = new JTextField(); // 文本框
JPasswordField pwdField =new JPasswordField();//密码框
JButton loginBtn = new JButton("登录");
JButton regitBtn = new JButton("注册");
JButton fogetBtn = new JButton("忘记密码");
JCheckBox reBox = new JCheckBox("自动登录");
JCheckBox remBox = new JCheckBox("记住密码");
Dimension dim = new Dimension(300,30);//尺寸
Dimension dim1 = new Dimension(150,30);//
Dimension dim3 = new Dimension(70,30);//占位空白框尺寸,账号提示前
Dimension dim2 = new Dimension(140,30);//占位空白框尺寸,账号输入框后1
Dimension dim4 = new Dimension(76,30);//占位空白框尺寸,账号输入框后2
Dimension dim5 = new Dimension(100,30);//占位空白框尺寸,复选框前
Dimension dim6 = new Dimension(60,30);//占位空白框尺寸,复选框后
Dimension dim7 = new Dimension(40,30);//占位空白框尺寸,登录后
Dimension dim8 = new Dimension(80,30);//占位空白框尺寸,登录前
Dimension dimlogin = new Dimension(250,30);//占位空白框尺寸,密码输入框后
zhanghaoField.setPreferredSize(dim);//组件设置大小
pwdField.setPreferredSize(dim);
blankJL1.setPreferredSize(dim1);
blankJL2.setPreferredSize(dim2);
blankJL3.setPreferredSize(dim3);
blankJL4.setPreferredSize(dim4);
blankJL5.setPreferredSize(dim5);
blankJL6.setPreferredSize(dim6);
blankJL7.setPreferredSize(dim7);
blankJL8.setPreferredSize(dim8);
loginBtn.setPreferredSize(dimlogin);
LoginJF.add(imgJL);
LoginJF.add(blankJL3);
LoginJF.add(zhanghaoJL);
LoginJF.add(zhanghaoField);
LoginJF.add(blankJL2);
LoginJF.add(blankJL4);
LoginJF.add(pwdJL);
LoginJF.add(pwdField);
LoginJF.add(blankJL1);
LoginJF.add(blankJL5);
LoginJF.add(remBox);
LoginJF.add(reBox);
LoginJF.add(fogetBtn);
LoginJF.add(blankJL6);
LoginJF.add(blankJL8);
LoginJF.add(loginBtn);
LoginJF.add(blankJL7);
LoginJF.setVisible(true);//可视化
//实例化监听接口
LoginUIListener lul =new LoginUIListener();
//绑定按钮
loginBtn.addActionListener(lul);
regitBtn.addActionListener(lul);
//向LoginUIListener传值
lul.zhanghaoField =zhanghaoField;
lul.pwdField =pwdField;
}
}
以上便是登录界面及按钮动作监听的实现,欢迎大家交流讨论。