JavaSwing简单界面开发及监听器实现
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登录界面就做好了。
- Java实现简单的五子棋(swing图形化界面)
- java swing实现简单的登录界面
- Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现
- java图像界面开发简单实例-JTextField、JPasswordField、JButton及事件的简单应用
- JavaWEB开发时FCKeditor类似office界面的ajax框架,加入后就能做界面类似office,能进行简单的文本编辑操作+配置手册
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- java图像界面开发简单实例-JCheckBox、JLabel的应用
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- 【JavaWeb开发】使用java实现简单的Excel文件的导入与导出(POI)
- java/vc单点登录的简单实现-Java基础-Java-编程开发
- 猜数字游戏(Java Swing 界面实现)
- 大钟的ios开发之旅(4)————简单谈谈ios程序界面实现的三种方式(代码创建,xib和storyboard)
- ios开发UI基础—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- Android一点 简单的监听器使用,实现开发时逻辑和view的分离
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- 用Java Swing编写简单的测试小工具界面(源码) 分类: Java 2015-07-30 10:49 23人阅读 评论(0) 收藏
- JAVA GUI 开发---简单登录界面
- JAVA 多进程应用 多个定时器作业的SWING界面及实现 -- s00n