2018.4.27 Java的Swing常用事件
Swing常用事件
1.Java Swing中处理事件的一般步骤是:
(1)新建一个组件(JButton)
(2)将该组件添加到面板中(JPanel)
(3)注册监听器以监听事件源产生的事件(如ActionListener来响应客户点击按钮事件)
(4)定义处理事件的方法(如在ActionLinstener中的actionPerform中定义响应的方法)
以上步骤我们可以用多种方法实现,用的最多的是第二种
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;
第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
package jf;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Tets extends JFrame{
JButton btn;
JPanel panel;
JTextField text;
private static final String TIP = "QQ号码/手机/邮箱";
//初始化窗口
public void init(){
this.setTitle("Test");
this.setSize(300,300);
this.setLocationRelativeTo(null);
this.setResizable(true);
}
//构造方法
public Tets() {
init();
text = new JTextField("qq",20);
btn = new JButton("提交");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
//点击弹框显示
JOptionPane.showMessageDialog(null, "提交失败");
System.out.println("hhhh");
}
});
this.getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(text);
this.getContentPane().add(btn);
this.setVisible(true);
}
public static void main(String[] args) {
new Tets();
}
}
2.ActionListener(按钮点击事件)
在文本框里面显示隐式字符
package jf;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Hint extends JFrame implements MouseListener
{
private static final long serialVersionUID = 1L;
private static final String TIP = "QQ号码/手机/邮箱";
public Hint ()
{
setTitle ("test");
setLayout (new BorderLayout ());
final JTextField tf = new JTextField (TIP);
tf.setName ("tf");
tf.setForeground (Color.gray);
tf.setLocation (0, 0);
tf.setSize (100, 30);
tf.addMouseListener (this);
JPanel panel = new JPanel ();
panel.setName ("panel");
panel.addMouseListener (this);
panel.setLayout (null);
panel.add (tf);
panel.setFocusable (true);
add (panel);
setSize (300, 300);
setLocationRelativeTo (null);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
}
public static void main ( String[] args )
{
new Hint ();
}
public void mouseClicked ( MouseEvent e )
{
Component component = e.getComponent ();
String name = component.getName ();
if (e.getButton () == MouseEvent.BUTTON1)
{
if ("tf".equals (name))
{
JTextField tf = (JTextField) component;
if (TIP.equals (tf.getText ()))
{
tf.setText ("");
}
}
else if ("panel".equals (name))
{
JTextField tf = (JTextField) ( (JPanel) component ).getComponents ()[0];
if ("".equals (tf.getText ()))
{
tf.setText (TIP);
}
}
}
}
public void mousePressed ( MouseEvent e )
{}
public void mouseReleased ( MouseEvent e )
{}
public void mouseEntered ( MouseEvent e )
{}
public void mouseExited ( MouseEvent e )
{}
}
密码
JTextField textField = new JTextField("密码");
textField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
if (textField.getText().isEmpty()){
textField.setText("密码");
}
}
});
2018.4.27 Java的Swing常用事件的更多相关文章
- 2018.4.27 java容器
一.容器的概念 在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 二.容器与数组的关系 之所以需要 ...
- 基于java平台的常用资源整理
这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...
- 这里整理了基于java平台的常用资源
这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- 【jQuery】(4)---jQuery常用事件
[jQuery入门](4)---jQuery常用事件 一.常用事件列表 1.blur() 当失去焦点时触发.包括鼠标点击离开和TAB键离开. 2.change() 当元素获取焦点后,值改变失去焦点事触 ...
- JAVA程序员常用英语
JAVA程序员常用英语 干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这 ...
- Java开发中常用jar包整理及使用
本文整理了我自己在Java开发中常用的jar包以及常用的API记录. <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...
- 2018年最新Java面试题及答案整理(持续完善中…)
2018年最新Java面试题及答案整理(持续完善中…) 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内 ...
- WebView使用详解(二)——WebViewClient与常用事件监听
登录|注册 关闭 启舰 当乌龟有了梦想…… 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书 免费直播:AI时代,机器学习如何入门? 程序员8 ...
随机推荐
- matplotlib画线(2)
这篇随笔是matplotlib画线的补充>>> #nocl参数控制图例中有几列,>>> import numpy as np>>> import ...
- pandas基础(2)_多重索引
1:多重索引的构造 >>> #下面显示构造pd.MultiIndex >>> df1=DataFrame(np.random.randint(0,150,size= ...
- nginx限制恶意IP处理方法
思考了几种方案,最终考虑使用ip黑名单的方式: 处理方法: 一.nginx黑名单方式: 1.过滤日志访问API接口的IP,统计每10分钟调用超过100次的IP,直接丢进nginx的访问黑名单 2.具体 ...
- 总结 Sublime Text 3 无法安装 Package Control 插件的解决办法
Sublime Text 是一款非常好用的轻便的编辑器,可以安装很多插件,实现IDE的很多功能,着实是程序员的利器. 我安装的 Sublime Text 3 Build 3143 ,软件汉化,软件激活 ...
- python2与python3 版本区别
目录 编码 输入输出 中文 除法 长整形 内置函数map xrange init reduce 字符串类型 dict字典 经典类 新式类 未完待补充 编码 python2默认编码器为ascii码(只支 ...
- python 之 函数 面向过程 三元表达式 函数递归
5.11 面向过程编程思想 核心是'过程'二字,过程即解决问题的步骤,即先干什么,再干什么........ 基于面向过程编写程序就好比在设计一条流水线,是一种机械式的思维方式. 总结优缺点: 优点:复 ...
- JS实现简单时钟效果
老师上课需要我们做一个时钟的小作业 ,我把它放在上面记录一下啦 表盘和时针我都是用的背景图的形式,然后绝对定位,通过调整left和top确定时针.分针.秒针的位置,transform-origin设置 ...
- Java8 中的 Optional
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- 封装了一个电商放大镜移入放大的功能,适用于VUE
代码地址:https://github.com/zhongqiulan/jqimgzoom 由于vue只支持ie9以上版本,所以这个插件也是一样的 效果图: 第一步,在goodsinfo文件中引入cs ...
- (转)关于inode和block的两道企业面试题
关于inode和block的两道企业面试题 原文:http://www.tk4479.net/xiaolong361/article/details/52373374 一.一个100M的磁盘分区,分别 ...