您的位置:首页 > 编程语言 > Java开发

JavaSwing简单界面开发及监听器实现

2019-07-14 10:42 330 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_44807642/article/details/95623889

JavaSwing简单界面开发及监听器实现

基础知识笔记。

包:给代码分类
使用不同包下的代码:
格式: 1、使用包名.类名
2、在类的定义,添加: import 包名.类名;

1、java中界面相关的代码
按照包名分类:
awt: java.awt包下,java早期采用的界面开发包,布局、尺寸、监听器等等仍然保留使用。
swing: javax.swing包下,该包下的组件类类名以J开头。

按照功能分类:
容器组件:(只能)装纳其他组件
顶级容器组件:界面,所有其他的组件都必须添加在顶级容器组件上,才能显示。
元素组件:提供和用户交互的功能,输出(显示文字、图片)输入(输入框、按钮)

布局:管理组件在容器组件的摆放规则。
流式布局:将所有的组件从左到右依次摆放,一行摆放不下下一个组件,则自动切换一行。

2、开发登陆界面需要使用内容
图片 javax.swing.ImageIcon
流式布局 java.awt.FlowLayout

尺寸 java.awt.Dimension

文本输入框 JTextField
密码输入框 JPasswordField
复选框 JCheckBox
登陆按钮 JButton
显示文字的标签 JLabel
显示图片的标签 JLabel

顶级容器组件(窗体) JFrame(只能有一个顶级容器组件)

3、API文档
提供了java中所有类的使用说明

4、开发登陆界面
第一步:新建一个界面类,定义一个显示界面的方法
第二步:创建窗体对象,设置窗体的属性
第三步:创建各个组件的对象,设置组件的属性,添加到窗体上
第四步:设置窗体可见
最后一步:在主方法中创建界面类的对象,调用显示界面的方法

实验目标:建一个qq登录界面,实现监听器和继承,并对登录失败与成功都有相应反应。

loginUI.java

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.ImageIcon;
import java.awt.Dimenson; //实现大小
import javax.swing.JLabel;
import java.awt.CheckBox;
import java.awt.Button;

public class loginUI{
public void showUI(){
JFrame  loginFrame = new JFrame();// 定义一个窗口框架
loginFrame.setSize(450,450);
loginFrame.setTitle("qq登录");
loginFrame.setLocationRelativeTo(null);//设置界面出来时在屏幕居中
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭

FlowLayout flowl = new FlowLayout();//采用流式布局,从左到右,从上到下
loginFrame.setLayout(flowl);

ImageIcon icon = new ImageIcon("C:\\Users\\Desktop\\qqlogin.jpg");//设置icon为新的图片对象
JLabel iconLabel = new JLabel(icon);//显示图片的标签
loginFrame.add(iconLabel);//把图片加进顶级容器组件

JTextField inputname = new JTextField();//创建姓名输入框
Dimension inputsize = new Dimension(360,35);//大小
inputname.setPreferredSize(inputsize);
loginFrame.add(inputname);//添加进去

JLabel register = new JLabel("注册账号");//文字类标签
loginFrame.add(register);//添加进去

JTextField inputpassword = new JTextField();//创建密码输入框
Dimension inputsize2 = new Dimension(360,35);//大小
inputpassword.setPreferredSize(inputsize2);
loginFrame.add(inputpassword);//添加进去

JLabel register2 = new JLabel("找回密码");//文字类标签
loginFrame.add(register2);//添加进去

Checkbox rememberpass = new Checkbox();//建立复选框
loginFrame.add(rememberpass);
JLabel register3 = new JLabel("记住密码");
loginFrame.add(register3);

Checkbox login = new Checkbox();//建立复选框
loginFrame.add(login);
JLabel register4 = new JLabel("自动登录");
loginFrame.add(register4);

Button login1 = new Button("登录");//建立登录按钮
loginFrame.add(login1);
//JLabel register5 = new JLabel("登录");
//Dimension inputsize3 = new Dimension(400,35);//大小
login1.setPreferredSize(inputsize2);
loginFrame.add(login1);

LoginListener loginL = new LoginListener();//设置监听器
login1.addActionListener(loginL);//给按钮加监听器
loginL.inputname = inputname;//给监听器赋值
loginL.inputpassword = inputpassword;//赋值
loginL.j = loginFrame;

loginFrame.setVisible(true);
}
public static void main(String[] args) {
loginUI ui =new loginUI();
ui.showUI();
}
}

下面设置监听器时要用到接口的相关知识
接口:
接口的定义: 关键字:interface
格式: public interface 接口名{ }
接口的属性定义:
格式: 【public static final】 属性类名 属性名 = 属性值;
【】包括的部分,可以写,也可以不写,默认拥有。
static:静态的,修饰属性,则属性可以通过类名/接口名直接访问。
final:不可改变的,修饰属性,属性不能修改,并且必须初始化。

接口的方法定义:
格式: 【public abstract】方法返回值类型 方法名(参数类型 参数名,……);
abstract:抽象的,修饰方法,则方法不能有方法体。
接口的对象:
接口不能直接创建对象。
需要接口类型的对象,需要创建一个类实现接口:
关键字:implements
格式:public class 类名 implements 接口名{ }
类实现接口,需要重写接口所有的方法。

接口的作用:
规则

事件监听机制:
给事件源添加事件监听器,当事件源上发生相应类型的事件时,则自动的调用事件监听器中事件处理方法。

事件:用外部设备操作组件。
鼠标事件: 用鼠标操作组件(关注点:位置、行为)
键盘事件: 用键盘操作组件
动作事件: 用鼠标点击按钮(关注点:是否点击、点击的哪一个按钮)
//注意动作事件与鼠标事件的区别

事件源:当前操作的组件。
事件监听器:每一种类型的事件,都有一个对应类型的事件监听器。
鼠标事件监听器: MouseListener
键盘事件监听器: KeyListener
动作事件监听器: ActionListener(其中鼠标点击Button属于动作事件不是鼠标事件

事件监听步骤:
第一步:确定事件源。
按钮
第二步:确定事件类型。
动作事件
第三步:创建一个类,实现对应类型的监听器接口。
第四步:创建监听器的对象, 给事件源添加监听器。

登录后:
1、登陆成功,关闭当前界面(dispose():销毁组件),然后再打开新界面。
2、登录失败,给出登录失败的提示(JOptionPane ),会弹出一个提示框。

设置监听器

LoginListener.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class LoginListener implements ActionListener{
JTextField inputname;
JTextField inputpassword;
JFrame j;
public void actionPerformed(ActionEvent e) {
//获取输入框内容
String name = inputname.getText();
String password = inputpassword.getText();
//j = j.getText();
//判断
if(name.equals("汤楠") && password.equals("123456")) {
//
System.out.println("登录成功!");

j.dispose();//用dispose()方法关闭以前的登录界面
//loginFrame.setVisible(false);
welcomeUI ui2 =new welcomeUI();
ui2.showWelcome();

}
else {
System.out.println("密码或账户错误!");
//用JOptionPane来错误提示框
JOptionPane.showMessageDialog(null, "密码错误,请重新输入", "标题",JOptionPane.WARNING_MESSAGE);
}
}
}


欢迎界面

欢迎界面与上面的主界面建造大同小异,调用一张新图片即可。注意之前要调用dispose()销毁登录界面。不然调出登录界面后,主界面仍然会存在。

welcomeUI.java
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import  java.awt.FlowLayout;
import javax.swing.JLabel;

public class welcomeUI {
public void showWelcome() {
JFrame welcomeFrame = new JFrame();//定义一个窗体框架
welcomeFrame.setSize(450,450);
welcomeFrame.setTitle("欢迎登录");
welcomeFrame.setLocationRelativeTo(null);//居中
welcomeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭

FlowLayout flowl = new FlowLayout();//布局
welcomeFrame.setLayout(flowl);

ImageIcon icon = new ImageIcon("C:\\Users\\Desktop\\welcome.jpg");
JLabel iconLabel = new JLabel(icon);
welcomeFrame.add(iconLabel);

welcomeFrame.setVisible(true);
}
}

到这里,一个简单的Swing的qq登录界面就做好了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐