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 ...
随机推荐
- 我对微信小程序的一些认识
一. 什么是微信小程序. 微信小程序是指微信公众平台小程序,小程序可以帮助开发者快速的开发小程序,小程序可以在微信内被便捷地获取和传播:是不需要下载和安装既可以使用的应用小程序,是和原有的三种微信公众 ...
- Solr 6.7学习笔记(06)-- spell check
拼写检查也是搜索引擎必备的功能.Solr中提供了SpellCheckComponent 来实现此功能.我看过<Solr In Action>,是基于Solr4.X版本的,那时Suggest ...
- cf822C(贪心)
题目链接: http://codeforces.com/problemset/problem/822/C 题意: 有n条线段(n<=2e5) 每条线段有左端点li,右端点ri,价值cost(1 ...
- webpack 打包和手动创建一个vue的项目
首先我们为啥要用webpack,为啥不用其他的打包的工具. 先听我捋捋, Webpack有人也称之为 模块打包机 ,由此也可以看出Webpack更侧重于模块打包,当然我们可以把开发中的所有资源(图片. ...
- Java:创建线程
Java定义了两种创建线程的方法: 1.实现Runnable接口 要实现Runnable接口,只需简单地实现run()方法即可,声明如下:public void run() 在run()方法中,可以定 ...
- iOS 隐藏百度地图SDK的百度LOGO
第一个思路:找到LOGO对应的UIIMageView,并将其隐藏hidden // 隐藏百度地图Logo UIView *mView = _mapView.subviews.firstObject; ...
- js json与字符串相互转换
JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串
- reaver 破解wifi
1. 无线网卡设置为监控模式 airmon-ng start wlan0 2. 获取附近路由信息 airodump-ng wlan0mon 3. 使用reaver破解wifi reaver -i wl ...
- svn检出项目报错
首先,我在浏览器访问svn检出项目地址是正常的,那么应该就是svn缓存的问题 1. 右键点击本地副本,TortoiseSVN -> Settings -> Saved Da ...
- nodejs模块学习: webpack
nodejs模块学习: webpack nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实 ...