事件机制实现的QQ登陆响应和计算器
第一个需要介绍的就是: .事件源
swing awt 图形界面
可以成为事件源对象的是:所有的图形界面组件对象。
你的动作发生在哪一个组件上,那么该组件对象就是事件源对象。
6.事件监听器方法
1.//动作监听器方法(输入框就是回车操作,按钮上就是鼠标单击)捕获事件源,输入输出
addActionListener(ActionListener al);
2.//鼠标监听器方法(捕获事件源上按下,释放,进入,离开)
( addMouseListener(MouseListener ml);
3.//鼠标移动监听器方法);(捕获事件源上的鼠标移动和鼠标拖动)
addMouseMotionListener(MouseMotionListener mml
4.//键盘监听器方法
addKeyListener(KeyListener kl);(捕获事件源上的键盘操作)
例如:1.事件源是jbulogin
2.找到监听器,创建类去继承接口,因为接口不能实例化
3.绑定事件处理类的对象
4.设置事件源的动作命令值jbulogin
两个框,使用参数传递,监听的构造方法
在事件机制学习中重要是实现算法功能,以及你的创造力,比如说计算器的实现,拆分运算符时,实在是绞尽脑汁,幸亏java的String功能强大如斯,还有百度大神的帮助,还有xg。成功完成时候,欣慰之余,也略感遗憾,毕竟只能实现两个数的加减乘除,再多估计还是要增加算法,再以后学习中,会使计算器的功能更加完善。
一下是QQ监听处理,计算器实现代码
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JOptionPane; public class LoginListener implements ActionListener { private JTextField d,e; private JFrame st1; public LoginListener(JFrame st1,JTextField d,JTextField e){ this.st1=st1; this.d=d; this.e=e; } //事件处理方法 public void actionPerformed(ActionEvent F){ //获取输入的账号和密码 String name =e.getText(); String pwd = d.getText(); //开始判断账号和密码是否都是administrator if(name.equals("administrator") && pwd.equals("administrator")){ // 实例化一个JFrame类的对象 JFrame jf=new JFrame(); jf.setTitle("简单登录界面");// 设置标题 jf.setSize(200, 400); jf.setResizable(false); jf.setLocationRelativeTo(null); // 设置关闭窗体的时候把程序退出 jf.setDefaultCloseOperation(3); jf.setVisible(true); st1.dispose();//关闭登录界面 } else{ JOptionPane.showMessageDialog(st1,"你输入的账号和密码错误,请重新输入"); } } }
public class Caculator { // 主函数程序入口 public static void main(String[] args) { Caculator caculator = new Caculator(); caculator.initUI(); } // 定义初始化计数器界面的方法 public void initUI() { // 实例化一个窗体对象 JFrame jf = new JFrame(); // 设置窗体的标题 jf.setTitle("计算器"); // 设置窗体的属性值 jf.setSize(300, 400);// 设置计算器的大小 jf.setLocationRelativeTo(null);// 设置居中出现 jf.setResizable(false);// 设置窗体大小不可改变 jf.setDefaultCloseOperation(3);// 设置关闭 // 调用菜单创建方法 JMenuBar menuBar = createMenuBar(); // 设置窗体的菜单属性 jf.setJMenuBar(menuBar); JPanel txtPanel = createTxtPanel(); JPanel centerPanel=createCenter(); jf.add(centerPanel,BorderLayout.CENTER); jf.add(txtPanel,BorderLayout.NORTH); addBackGroundImage(jf); jf.setVisible(true);// 设置窗体可见 } // 定义创建菜单栏的方法 public JMenuBar createMenuBar() { // 实例化一个菜单栏对象 JMenuBar menuBar = new JMenuBar(); // 实例化3个菜单:编辑、查看、帮助 JMenu menu1 = new JMenu("编辑(E)"); JMenu menu2 = new JMenu("查看(V)"); JMenu menu3 = new JMenu("帮助(H)"); // 将菜单添加到菜单栏 menuBar.add(menu1); menuBar.add(menu2); menuBar.add(menu3); // 返回创建好的菜单 return menuBar; } // 定义文本框显示面板 public JPanel createTxtPanel() { // 实例化一个面板对象 JPanel txtPanel = new JPanel(); // 实例化一个文本框 text = new JTextField(); // 设置文本框的大小 text.setPreferredSize(new Dimension(200, 50)); txtPanel.add(text); return txtPanel; } JTextField text; //添加背景图片的方法,你要把背景图加到那里 public void addBackGroundImage(JFrame jf) { ImageIcon backGroundImage = new ImageIcon("images/12.png"); JLabel backGround = new JLabel(backGroundImage); backGround.setBounds(0, 0, backGroundImage.getIconWidth(), backGroundImage.getIconHeight()); jf.getLayeredPane().add(backGround, new Integer(Integer.MIN_VALUE));//用到jf的地方 JPanel contentPanel = (JPanel) jf.getContentPane(); contentPanel.setOpaque(false); } public JPanel createNorth() { JPanel northPanel = new JPanel(); JTextField t1 = new JTextField(); northPanel.setOpaque(false); return northPanel; } public JPanel createCenter() { JPanel centerPanel = new JPanel(); //centerPanel.setLayout(new FlowLayout()); centerPanel.setPreferredSize(new Dimension(220,0)); String[] label = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/", "=", ".","EC" };// 声明标签数组label1存放按钮上的标签 // 声明按钮数组存放16个按钮 ActionListener a=new CaListener(text); for (int i = 0; i < label.length; i++)// 利用for循环把标签放在按钮上,使每个按钮添加事件监听器,在面板p1上添加上16个按钮 { JButton b = new JButton(label[i]); b.addActionListener(a); //b.setPreferredSize(new Dimension(45,55)); centerPanel.add(b); // 分别将按钮添加到面板p1上 } centerPanel.setOpaque(false);//设置窗口透明 return centerPanel; } }
public class CaListener implements ActionListener { private JTextField jt1;//定义文本类的对象 private double number1,number2;//存储数值 private String str="";//存取运算符 public CaListener(JTextField jt1){//将文本框对象赋值给当前类的对象 this.jt1=jt1; } //处理事件机制 public void actionPerformed(ActionEvent e) { String s1=e.getActionCommand(); if(s1.equals("EC")){ s1="0"; jt1.setText(""); } if(jt1.getText().equals("0")){ jt1.setText(s1); } else{ jt1.setText(jt1.getText()+s1); } //if(s1.equals("+")||s1.equals("-")||s1.equals("*")||s1.equals("/")){ //number1=Integer.parseInt(jt1.getText()); //number2 //} //if() if (s1.equals("+") || s1.equals("*")) { String recept; recept=jt1.getText().replace(s1,""); number1 = Double.parseDouble(recept); str = s1; jt1.setText(""); } if( jt1.getText().contains("=")&&str.equals("+")){ String[] array=jt1.getText().split("="); number2=Double.parseDouble(array[0]); double count; count=number1+number2; str=""+count; //System.out.println(count); jt1.setText(str); } if( jt1.getText().contains("=")&&str.equals("*")){ String[] array=jt1.getText().split("="); number2=Double.parseDouble(array[0]); double count; count=number1*number2; str=""+count; //System.out.println(count); jt1.setText(str); } if( jt1.getText().contains("=")&&str.equals("*")){ String[] array=jt1.getText().split("="); number2=Double.parseDouble(array[0]); double count; count=number1*number2; str=""+count; //System.out.println(count); jt1.setText(str); } if( jt1.getText().contains("-")&& jt1.getText().contains("=")){ String[] array=jt1.getText().split("="); System.out.println(array[0]); String[] array1=array[0].split("-"); number1=Double.parseDouble(array1[0]); number2=Double.parseDouble(array1[1]); double count; count=number1-number2; str=""+count; //System.out.println(count); jt1.setText(str); } if( jt1.getText().contains("/")&& jt1.getText().contains("=")){ String[] array=jt1.getText().split("="); System.out.println(array[0]); String[] array1=array[0].split("/"); number1=Double.parseDouble(array1[0]); number2=Double.parseDouble(array1[1]); double count; count=number1/number2; str=""+count; //System.out.println(count); jt1.setText(str); } if( jt1.getText().contains("*")&& jt1.getText().contains("=")){ String[] array=jt1.getText().split("="); System.out.println(array[0]); String[] array1=array[0].split("*"); number1=Double.parseDouble(array1[0]); number2=Double.parseDouble(array1[1]); double count; count=number1*number2; str=""+count; //System.out.println(count); jt1.setText(str); } } }
相关推荐
【仿QQ登陆界面设计详解】 在IT行业中,用户界面(UI)的设计至关重要,因为它直接影响到用户的体验和产品的吸引力。QQ作为中国最受欢迎的即时通讯软件之一,其登录界面早已深入人心。仿QQ登录界面的设计,旨在模仿...
QT计算器界面和计算器功能实现是基于QT框架进行的软件开发项目。QT是一个开源的C++图形用户界面应用程序开发框架,它提供了丰富的库和工具,帮助开发者构建跨平台的应用程序,包括桌面、移动和嵌入式设备。在这个...
java写的qq登陆界面,只实现了界面,简单的界面制作
本项目名为“java实现的计算器(界面程序)”,使用了Java Swing库来构建计算器的界面,并采用了GridBagLayout布局管理器来优化组件的摆放,以实现一个美观且功能齐全的计算器。 Java Swing是Java AWT(抽象窗口...
自制简易qq登陆界面,第一次制作页面,写的有很多不足的地方,适合初学者看
首先,"winform高仿qq登陆界面"这个标题暗示了我们需要使用Microsoft的Windows Forms(WinForms)技术来构建一个与腾讯QQ登录界面类似的用户界面。WinForms是.NET Framework的一部分,用于开发桌面应用程序,提供了...
【标题】"高仿qq登陆界面"所涉及的知识点主要集中在网页设计与开发以及易语言的应用上。这个项目可能是为了教学、练习或是创建一个类似QQ登录界面的模拟体验。下面将详细阐述这些知识点: 1. **HTML**:HTML...
Java做的qq登界面,费很大劲才找来的不错的程序啊
"仿QQ登陆界面源代码"是一份旨在帮助编程爱好者和初学者理解并实现类似QQ登录界面的代码资源。通过这份源代码,我们可以学习到UI设计的基本原则、前端开发技术以及如何运用这些技术来创建一个具有交互性的登录界面。...
【VB实现的QQ简单登陆界面】是一个利用Visual Basic(VB)编程语言开发的模拟QQ登录界面的示例项目。在VB中,我们可以利用其强大的Windows Forms应用开发功能,创建出与QQ登录页面相似的图形用户界面(GUI)。下面将...
QQ登陆界面测试计划是确保QQ语音聊天软件登录功能稳定、安全和高效的重要环节。以下是该测试计划的关键细节和实施步骤: 1. **概述** QQ作为一款由腾讯公司开发的热门语音聊天软件,其登陆界面的测试至关重要。...
我们需要编写事件处理程序来响应这些事件,实现相应的功能,如读取按钮上的文字,执行计算逻辑。 4. **数值运算**: 计算器的核心是进行数学运算,包括加、减、乘、除、括号处理等。这些运算可以通过内置的运算符...
这是java的qq登陆界面的源代码,简单易懂!!!!
8. **源码分析**:易语言QQ等级计算器的源码包含了整个软件的逻辑和实现细节,通过分析源码,可以学习到如何使用易语言进行条件判断、循环、数据处理以及图形界面设计等编程技能。 9. **图形用户界面**:计算器软件...
适合初学者android开发,主要是手机qq登陆界面的设计,对初学者来说非常有用的
【Android高仿QQ登录界面Demo】是一个专门为Android开发者设计的学习资源,它旨在帮助开发者们实现一个与最新版QQ登录界面高度相似的用户界面,并且包含了部分登录逻辑的实现。这个项目对于那些对Android UI设计和QQ...
QQDemo项目是一个使用C++语言在Visual Studio 2008环境下编写的程序,旨在实现一个仿QQ登录界面。这个项目对于学习C++图形用户界面(GUI)编程以及模拟流行应用的设计理念具有一定的实践价值。以下将详细阐述相关...
界面用QT编程,实现类似与qq等登陆界面。客户与客户可以通信。传输文件!
QQ登录界面的动画效果和动态响应可能就是通过Qt Quick实现的。 3. **Qt Widgets** 虽然QML是Qt5的亮点,但Qt Widgets模块仍然存在,用于创建传统的桌面应用程序。如果这个项目中包含了一些非QML的组件,那么可能...