<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
话说这是卤煮的第一篇博客呢,没想到是关于java的,第一篇写点简单轻松的吧。
通过写这个小程序,可以帮助我们理解传参的方法,事件机制和事件监听的作用过程。
首先,我们要实现一个窗体,包括文本框,标签,标题,按钮等等(这些都在java.swing包中),这些都必须装到一个容器中,即窗体中。
因此,我们需要创建一个JFrame对象,再调用add方法,将创建的各个组件加入JFrame窗体中。创建对象的方法是:类名 对象名 = new 类名();
再调用JFrame类型的对象frame下的setVisible()方法,参数为true。
frame.setVisible(true);//设置窗体可视
这样,我们就能看的画出的窗体了。
需要注意的是,在画窗体的时候,记得加上
frame.setDefaultCloseOperation(3);//设置点击关闭按钮时,关闭并退出,EXIT_ON_CLOSE = 3
这样一条语句,这样在点击关闭按钮时,程序才会真正退出并关闭,其中,3表示EXIT_ON_CLOSE。
另外,在以后的应用中,经常会用到Graphics()画笔,而Graphics必须由JFrame的getGraphics()方法得到,要记得只有在setVisible(true)之后才能得到画笔,否则,得到的画笔为null。
下面,要使按钮发挥作用,当鼠标点击时,得到文本并进行比较,根据不同的比较结果进行不同的显示
首先,事件源在按钮上,当鼠标点击按钮时,才执行相应的处理方法。所以,在按钮上添加监听器方法addActionListener();addActionListener需要一个ActionListener类型的参数,ActionListener是一个事件接口,因此,我们要新建一个Listener类实现ActionListener接口,实现其中的抽象方法
public class Listener implements ActionListener { public void actionPerformed(ActionEvent e) {} }
实现输入比对中,卤煮遇到一个问题:如何得到输入在文本框中的文本并传到Listener类中的事件处理方法中进行对比处理?经过自己的思考和胡哥指点后,终于解决了这个问题。
这涉及到一个传参的问题,传参的方法有两个:构造方法传参和set方法传参。这里用的是set方法传参,通过重载set方法实现参数的传递。
private JTextField jtf;//写在类下面,是全局JTextField类型变量 public void setTJF(JTextField jtf){ //文本框的set方法,传人JTextField类型参数 this.jtf = jtf; //将传人的JTextField类型变量赋予当前的jtf }
再在JFrame类中的showFrame()方法中调用Listener的set方法,传入文本框中的文本
ls.setTJF(te); //调用setTJF方法,使该输入框的文本te传人监听器类中
这样,就得到了JFrame中输入在文本框中的文本,比较后,再重新绘制窗体,文本正确,则输出“登陆成功”,否则,输出“登陆失败”。本程序的输出在重绘的文本框中。
我对监听过程的理解是这样的:在按钮添加了监听器方法后,当用鼠标点击了按钮之后,监听器方法获得事件源和事件源上发生的动作通过后台传给ActionEvent,然后调用事件接口的actionPerformed()方法进行处理。
全部代码如下:
package cn.lzj0713; public class JFrame { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JFrame show = new JFrame();//创建一个JFrame类型的对象 show.showFrame();//调用JFrame下的showFrame方法 } /** * showFrame方法,用来实现图形界面 */ public void showFrame(){ javax.swing.JFrame frame = new javax.swing.JFrame();//实例化JFrame类型的对象frame frame.setTitle("my frame");//设置标题 java.awt.FlowLayout fl = new java.awt.FlowLayout();//实例化FlowLayout类型对象 frame.setLayout(fl);//设置流式布局 javax.swing.JLabel la = new javax.swing.JLabel("名字");//设置标签 javax.swing.JTextField te = new javax.swing.JTextField(8);//设置文本框,长度为8 javax.swing.JButton bu = new javax.swing.JButton("登陆");//设置登陆按钮,上书“登陆”二字 //把以上的各个组件都加到JFrame类型的容器frame中 frame.add(la); frame.add(te); frame.add(bu); frame.setSize(300,200);//设置窗体大小 frame.setDefaultCloseOperation(3);//设置点击关闭按钮时,关闭并退出,EXIT_ON_CLOSE = 3 frame.setVisible(true);//设置窗体可视 Listener ls = new Listener();//创建一个Listener类型的对象 bu.addActionListener(ls);//向按钮bu添加监听器方法 ls.setTJF(te); //调用setTJF方法,使该输入框的文本te传人监听器类中 } }
package cn.lzj0713; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTextField; /** *这是一个实现 ActionListener接口的类 * @author lzj * */ public class Listener implements ActionListener { private JTextField jtf;//全局JTextField类型变量jtf public void setTJF(JTextField jtf){ //文本框的set方法,传人JTextField类型参数 this.jtf = jtf; //将传人的JTextField类型变量赋予当前的jtf } //监听器的事件处理方法 @Override public void actionPerformed(ActionEvent e) { String str = jtf.getText();//获得JFrame文本框上的文本,赋予str System.out.println(str);//输出str //判断输入字符是否符合预期,是则显示登录成功界面;否则显示登录失败界面 if(str.equals("lzj")){ javax.swing.JFrame frame = new javax.swing.JFrame();//创建一个JFrame对象 frame.setTitle("my frame");//设置标题 java.awt.FlowLayout fl = new java.awt.FlowLayout();//实例化FlowLayout类型对象 frame.setLayout(fl);//设置流式布局 javax.swing.JTextField te = new javax.swing.JTextField(8);//设置文本框,长度为8 te.setText("登陆成功");//设置文本框中显示的文本内容 ////把以上的各个组件都加到JFrame类型的容器frame中 frame.add(te); frame.setSize(300,200); frame.setDefaultCloseOperation(3); frame.setVisible(true); }else{ jtf.setText("登录失败"); } } }
这次编程学到了:
1.传参的方法:构造方法传参和set方法传参
2.getGraphics要写在setVisible之后
3.事件机制
相关推荐
Java监听器的实现和原理详解 Java监听器是一种非常重要的设计模式,在Java中广泛应用于事件驱动编程。监听器模式的主要思想是将事件源和...了解监听器模式的原理和实现,可以帮助我们编写更加灵活、可扩展的代码。
本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 1. **自身类作为事件监听器** 在自身类作为事件...
JAVA事件监听器的四种实现方式 JAVA事件监听器是JAVA语言中的一种机制,它允许程序员在特定的事件发生时执行某些操作。事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件...
在Java中,我们可以使用`java.util.Timer`类、`java.util.TimerTask`类以及Java 8引入的`java.time`包中的接口来实现时间监听功能。下面将详细介绍这些方法。 1. **使用Timer和TimerTask** `java.util.Timer`类...
3. **事件监听器接口**:Java提供了一系列的监听器接口,每个接口对应一类事件。例如,`ActionListener`用于处理`ActionEvent`,`MouseListener`用于处理`MouseEvent`,`KeyListener`用于处理`KeyEvent`。程序员需要...
Java Swing使用事件监听机制,可以通过实现`ActionListener`接口并在`actionPerformed`方法中编写处理逻辑。这样,当按钮被点击时,就会执行登录验证的代码。 6. **密码安全**: 为了保护用户信息,开发人员应确保...
本教程将深入探讨Java窗体的基本概念、多窗体操作以及事件处理机制。 1. Java Swing基础知识: Java Swing提供了一系列组件,如JFrame、JButton、JLabel等,用于构建窗口应用。JFrame是Java窗体的基础,它可以包含...
Java Swing 常用事件和监听器接口 Java Swing 是一个功能强大的图形用户界面(GUI)工具包,它提供了许多事件和监听器接口,帮助开发者更好地处理用户交互。下面是 Java Swing 中常用的事件和监听器接口。 1. ...
在Java编程中,监听数据库的变化是一项重要的任务,特别是在实时数据处理和系统监控的场景下。以下将详细讲解如何使用Java实现数据库监听,并提供一个代码实例作为参考。 首先,要实现数据库监听,我们需要理解两种...
总的来说,Java事件处理机制是构建交互式应用程序的关键,它通过事件源、事件和监听器的协作,实现了对用户行为的响应。事件监听器适配器进一步简化了这一过程,让开发者可以更加专注地处理应用程序的核心逻辑。理解...
首先,我们需要理解Java AWT(Abstract Window Toolkit)和Swing库中的基础事件监听机制。这两个库提供了许多内置的事件类和监听器接口,如ActionListener用于处理按钮点击,MouseListener和MouseMotionListener用于...
Java中的事件机制是Java编程中一个重要的概念,它基于观察者模式(Observer Pattern)来实现对象之间的通信。观察者模式是一种行为设计模式,允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的...
而通过JavaScript方法添加事件监听器,可以更灵活地控制事件处理过程,并且可以轻松地添加和移除监听器。 在前端开发中,对this关键字的理解和使用是必要的。在事件处理函数中,this关键字默认指向触发事件的元素,...
### Java事件和监听的区别 在Java编程语言中,事件(Event)与监听器(Listener)是构建用户交互界面的关键组成部分。本文将详细解释这两者之间的区别,并通过具体示例帮助读者更好地理解它们的工作原理。 #### 一...
Java事件处理机制是Java GUI编程中的核心组成部分,它允许程序响应用户的交互操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个关键角色:事件对象(Event Object)、事件源(Event Source)和事件...
在Java编程语言中,创建一个透明的窗体是一项有趣且实用的技术,它可以为应用程序提供更加美观和现代的外观。在本篇文章中,我们将探讨如何利用Java实现透明窗体,并通过提供的`ShellWindowBorderPane`代码示例进行...
### Java事件处理机制-事件监听器的四种实现方式 在Java图形用户界面编程中,事件处理是至关重要的一环。事件监听器是用来响应特定用户动作(如按钮点击、文本输入等)的一种机制。本文将详细介绍Java中事件监听器...
Java事件处理机制是Java GUI编程中的重要组成部分,它允许用户与图形界面进行交互。在Java中,事件处理涉及事件源(Event Source)、事件(Event)和事件监听器(Event Listener)。当用户执行某个操作,如点击按钮...
监听器模式是Java设计模式中的一种行为型模式,主要用于监听某些事件的发生,并在事件发生时自动执行预定义的操作。在实际开发中,监听器模式可以用于多种场景,如UI事件处理、事件广播、异步通知等。 在监听器模式...
Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...