java实用教程——组件及事件处理——DocumentEvent事件

学习《java程序设计》第九章学习总结 第9章 组件及事件处理 9.7Java Swing概述 Java的Swing工具包中包含了许多类来支持GUI设计。如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。 javax.swing包提供了功能更为强大的用来设计GUI的类。java.awt和javax.swing包中一部分类的层次关系的UML 容器类和组件类 javax.swing包中JCompone... 阅读详情

DocumentEvent事件源:
文本区Document的维护
注册监视器:
使用addDocumentListener(DocumentListener listen)为事件源添加监视器
DocumentListener接口:
接口中有三个方法:
public void changUpdate(DocumentEvent e);
public void removeUpdate(DocumentEvent e);
public void insertUpdate(DocumentEvent e);

在下面的例子9 (运行效果如图9.12所示)将用户排序单词一个文本区输入的单词按字典序排序后放入另一个文编辑区,实现如下功能:
用户在窗口(WindowDocument类负责创建)中的一个文本区inputArea内编辑单词,
触发DocumentEvent事件,监视器textListener(TextListener类负责创建)通过处理该事件将该文本区的单词排序,并将排序结果放入另一个文本区showTextArea 中,
即随着文本区inputArea内容的变化,另一个文本区showTextArea不断地更新排序。

1.用户选择名字为“复制©”copy的菜单项触发ActionEvent 事件,监视器handie(Handlel istener类负责创建)将用户在showTextArea选中的文本复制到剪贴板。

2.用户选择名字为“剪切(T)”的菜单项触发ActionEvent事件,监视器hande( HandleListener类负责创建)将用户在showTextArea选中的文本剪切到剪贴板。

3.用户选择名字为“粘贴§” 的菜单项的按钮触发ActionEvent事件,监视器handle(HandleListener类负责创建)将剪贴板的内容粘贴到inputArea,

public class Example9_9 {
	   public static void main(String args[]) {
	      WindowDocument win=new WindowDocument();
	      win.setBounds(100,100,890,400);
	      win.setTitle("排序单词");
	   }
	}

;

import java.awt.*;
import javax.swing.*;
import javax.swing.text.Document;
public class WindowDocument extends JFrame { 
   /**
	 * 
	 */
	private static final long serialVersionUID = -4158929136133563216L;
JTextArea inputText,showText; //文本输入区,文本展示区
   JMenuBar menubar;//菜单条
   JMenu menu;//菜单项
   JMenuItem  itemCopy,itemCut,itemPaste;//菜单 
   TextListener textChangeListener;  //inputText的监视器
   HandleListener handleListener;  //itemCopy,itemCut,itemPaste的监视器
   WindowDocument() { 
      init();
      setLayout(new FlowLayout());
      setVisible(true);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
   }
   void init() {
      inputText = new JTextArea(10,28);
      showText = new JTextArea(10,28);
      showText.setLineWrap(true);       //文本自动回行
      showText.setWrapStyleWord(true);  //文本区以单词为界自动换行
      Font font = new Font("宋体",Font.PLAIN,25);
      inputText.setFont(font);
      showText.setFont(font);
      menubar=new JMenuBar(); 
      menu=new JMenu("编辑");   
      itemCopy=new JMenuItem("复制(C)");
      itemCut=new JMenuItem("剪切(T)");
      itemPaste=new JMenuItem("粘贴(P)");
      itemCopy.setAccelerator(KeyStroke.getKeyStroke('c'));//设置快捷方式
      itemCut.setAccelerator(KeyStroke.getKeyStroke('t'));
      itemPaste.setAccelerator(KeyStroke.getKeyStroke('p'));//设置快捷方式
      itemCopy.setActionCommand("copy");
      itemCut.setActionCommand("cut");
      itemPaste.setActionCommand("paste");
      menu.add(itemCopy);
      menu.add(itemCut);
      menu.add(itemPaste);
      menubar.add(menu);
      setJMenuBar(menubar);
      add(new JScrollPane(inputText));
      add(new JScrollPane(showText));
      textChangeListener = new TextListener();//监视器
      handleListener = new HandleListener(); //监视器
      textChangeListener.setView(this);  
      handleListener.setView(this);
      Document document =inputText.getDocument();//获取输入区的文档,放入Document中
      document.addDocumentListener(textChangeListener);//向文档注册监视器
      itemCopy.addActionListener(handleListener);  //向菜单项注册监视器
      itemCut.addActionListener(handleListener);
      itemPaste.addActionListener(handleListener);
   }
}



import java.awt.event.*;
public class HandleListener implements ActionListener {
   WindowDocument view;
   public void setView(WindowDocument view) {
      this.view = view;
   }
   public void actionPerformed(ActionEvent e) {
      String str=e.getActionCommand(); 
      if(str.equals("copy"))
         view.showText.copy();
      else if(str.equals("cut"))
         view.showText.cut();
      else if(str.equals("paste"))
         view.showText.paste();
   }
}



import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;
import java.util.Arrays;
public class TextListener implements DocumentListener {
   WindowDocument view;
   public void setView(WindowDocument view) {
      this.view = view;
   }
   public void changedUpdate(DocumentEvent e) {
      String str=view.inputText.getText(); 
     //空格、数字和符号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)组成的正则表达式:
      String regex="[\\s\\d\\p{Punct}]+"; 
      String words[]=str.split(regex); 
      Arrays.sort(words);      //按字典序从小到大排序
      view.showText.setText(null); 
      for(int i=0;i<words.length;i++)
         view.showText.append(words[i]+",");
   }
   public void removeUpdate(DocumentEvent e) { 
      changedUpdate(e);
   }
   public void insertUpdate(DocumentEvent e) { 
      changedUpdate(e);
   }
}

在这里插入图片描述

雨流计数法的matlab实现,采用三点法与四点法 介绍雨流计数法是20世纪50年代由英国的两位工程师M.Matsuishi和T.Endo提出来的。该计数法的主要功能是把实测载荷历程简化为若干个载荷循环,供疲劳寿命估算和编制疲劳试验载荷谱使用。它以双参数法为基础,考虑了动强度(幅值)和静强度(均值)两个变量,符合疲劳载荷本身固有的特性。雨流计数法主要用于工程界,特别在疲劳寿命计算中运用非常广泛计数规则(1)雨流依次从载荷时间历程的峰值位置的内侧沿着... 阅读详情

相关推荐

深入解析STM32F40x CAN控制器的配置与优化

本文深入解析STM32F40x CAN控制器的配置与优化,涵盖基础工作模式、波特率计算、筛选器配置及中断管理等关键技术。通过实战案例和代码示例,帮助开发者高效配置CAN通信,提升工业控制系统的稳定性和性能。

weixin_26834815的博客 222

DocumentEvent事件

1 DocumentEvent事件源 文本区调用getDocument()方法返回所维护的文档,注意这里是文本区所维护的文档能出发DocumentEvent事件。 2 注册监视器 能触发DocumentEvent事件的事件源使用addDocumentListener(DocumentListener listener)将实现DocumentListener接口的类的实例注册为事件...

hello_cmy的博客 4081

LVGL 实战:虚拟列表与对象复用机制在嵌入式GUI中的性能优化

本文深入探讨LVGL虚拟列表与对象复用机制在嵌入式GUI中的性能优化实践。通过复用机制动态管理UI对象,大幅降低内存占用,实现无限滚动列表的流畅体验。文章详细解析核心算法、内存优化策略及跨平台适配技巧,帮助开发者在资源受限设备上高效处理大量数据展示。

rice5的博客 1106

Java DocumentEvent事件

Java DocumentEvent事件 文本区有一个实现Document接口的示例,这个实例被称为文本区所维护的文档,当文档发生变化时就能触发DocumentEvent事件 注册监视器 addDocumenListener(DocumentListener listen)//listen是实现了DocumentListener的类 DocumentListener接口 这个接口不是单接口,它有3...

想带狗熊去吹风 1350

YOLO系列专栏(六):YOLO26热力图可视化 | 解析模型推理逻辑,定位检测关键区域

YOLO26作为新一代目标检测模型,其核心优势是高效的特征提取和精准的目标定位,但模型内部的推理过程的“黑盒”特性,给我们的优化带来了很大困扰:❌ 检测精度低:不知道是模型没学到关键特征,还是特征提取不充分;❌ 出现误检/漏检:无法定位问题根源——是锚框不合适?还是特征图未捕捉到目标?❌ 模型优化盲目:调参、修改网络结构全靠“猜”,缺乏针对性;❌ 难以解释模型行为:实际项目中,需要说明模型“为什么检测到这个目标”,尤其是医疗、工业等对可解释性要求高的场景。而热力图可视化。

qq_36130719的博客 732

最全的Hermes安装教程以及Hermes WebUI安装部署和配置指南

* 直接执行命令**

小石头的专栏 1074

JavaSwing 常见事件处理 (ActionEvent ItemEvent DocumentEvent)

ActionEvent动作事件类 事件源:文本框(JTextField、JTextArea)、按纽(JButton)、菜单项(JMenuItem)、密码框(JPassword)和单选按纽(JRadioButton)等 注册监听器的方法: addActionListener(ActionListener listener); 事件类ActinEvent中的常用方法 public Object ge...

zf2015800505的博客 4057

信号的反射(振铃、台阶、回勾、尖峰毛刺)

反射是怎么形成的 假设信号传输过程中,经过两个阻抗不同的区域,如下图所示。区域1阻抗为Z1,区域2阻抗为Z2。 在分界面处,电压必须是连续的,否则,在分界面处会产生无穷大的电场,这在真实世界中是不可能的。 同样,分界面两侧的电流必须是连续的,否则分界面处会产生无穷大的磁场。 因此: 根据欧姆定律,必然有: 显然如果Z1≠Z2的情况下,上面式子不可能同时成立。如何理解这一困境? 应该从 ...

sinat_15677011的博客 1万+

java如何设计功能_怎么用java设计一个窗口,要求功能如下:

展开全部我这有个联系swing的界面大全,里面包含32313133353236313431303231363533e78988e69d8331333238653863了常用的主件,可以直接用package demo.synth;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.lang.reflec...

weixin_39765339的博客 363

【数据集】1980-2020年(5年)土地利用分类数据-中国科学院

简介1980-2020年每五年土地利用数据-中国科学院

WW、forever的博客 3933

基于Python的Booking酒店数据爬虫实战:最新技术与完整代码解析

本文将详细介绍如何使用Python构建一个高效的Booking酒店数据爬虫,涵盖从基础爬取到高级反反爬技术的完整实现。我们将使用最新的Python爬虫技术栈,包括requests-html、Playwright、智能代理轮换等技术,并提供完整的可运行代码示例。文章将深入探讨爬虫的各个组成部分,包括数据提取、存储、反反爬策略以及性能优化等方面。关键词:Python爬虫、Booking数据采集、反反爬技术、Playwright、数据存储。

2201_76125261的博客 936

Java学习笔记-组件及处理事件(二)(ActionEvent,DocumentEvent,ItemEvent)

四:处理事件 1:事件处理模式 1:事件源 能够产生事件的对象都可以称为事件源,例如文本框,按钮等。这个对象必须是Java能够认为可以产生事件的对象。 2:监视器 需要对一个事件源进行监视,以便对发生的事件做出处理,事件源调用对应的方法注册自己的监视器。 3:处理事件的接口 Java规定为了让监视器这个对象对事件源发生的事件进行处理,创建该监视器对象的类必须实现响应的接口。即必须在类体中实现相应的方法。也就是监视器必须和一个初始事件的方法绑定。 2:ActionEvent事件 1:ActionEvent事件

时间识人的博客 5430

2024顶级提示工程工具:提升效率的12个神器

LlamaIndex虽然本身不是直接的提示词编辑工具,但其整个设计都围绕着如何有效地将外部知识融入LLM的提示词。它提供了结构化的方式来管理“上下文窗口”——即哪些私有数据应该被包含在提示词中。通过优化索引结构和检索策略,可以确保提示词中包含最相关、最高质量的上下文信息,从而大幅提升LLM基于私有数据回答问题的准确性和相关性。同时,LlamaIndex允许开发者针对不同的查询类型和数据特点定制提示词模板,这使得提示词的复用和优化更加系统化。

AIGC应用创新大全的博客 1098

Java基础知识笔记-12-事件处理

Java基础知识笔记-12-事件处理 学习组件除了要熟悉组建的属性和功能外,一个更重要的方面是学习怎样处理组建上发生的界面事件,当用户在文本框中输入文本后按回车,单击按钮,在一个下拉式列表中选择一个条目进行一个条目等操作时,都发生界面事件,例如,用户单击一个确定或者取消的按钮,程序可能需要做出不同的处理。 1 事件处理模式基础 任何支持GUI的操作环境都要不断地监视按键或点击鼠标这样的事...

aph85734的博客 2300

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java组件及其事件处理_组件及事件处理

Java SwingJava Swing是Java的一个强大分支,为桌面程序设计提供了非常强大的支持。通过用户图形界面GUI,用户和图形之间可以方便地进行交互。java.awt包,提供了许多用来设计GUI的组件类。早期主要使用java.awt类,javax.swing诞生后,该包提供了功能更为强大的类用于GUI设计。javax. swing包中JComponent类是java. awt包中Cont...

weixin_31124869的博客 1124

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JAVA界面事件处理

总结一下关于JAVA事件处理机制。 JAVA是通过授权处理机制来对事件进行处理,那么授权处理机制是什么意思呢?

lmtwin的博客 1970

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何找到触发DocumentEvent的源控件

监听JTextField控件里文本的修改需要用到DocumentListenner。 public void itemStateChanged(ItemEvent arg0) {     ……     List selectedList = (List)arg0.getSource();//Get the changed list     …… }

rockwjx的专栏 1467

java swing开发窗体程序开发(二)事件(Action,Item,Document)

整个窗体程序的运行模式是:事件处理模式。需要理解这个模式,要了解3个基本概念 事件源:即产生这个事件的组件 监视器:即监视这个组件产生事件,即实现事件接口的类的对象 处理事件的接口:即这是一个类,实现了该种事件对应的接口,接口中必须实现一指定函数,当事件发生时,就会调用这个函数 进一步流程就是 1确定该组件的事件类型-2创建一个类实现该组件的事件类型对应的接口,这个类的对象就是监视器-3组件通过a...

(˶˚ ᗨ ˚˶)来康康我 5866

Java2实用教程第五版+第九章习题答案

这是《Java2实用教程第五版》的试题答案,需要的同学评论关注加点赞 有问题可以在评论区提出 1.问答题 (1)JFrame类的对象的默认布局是什么布局? Frame容器的默认布局是BorderLayout布局。 (2)一个容器对象是否可以使用add方法添加一个JFrame窗口? 不可以。JFrame窗口是一个底层容器,其他组件必须被添加到底层容器中,以便借助这个底层容器和操作系统进行交互。窗口默认被系统添加到显示器屏幕上,因此不允许将一个窗口添加到另一个容器中。 (3)JTextField可.

互联网小队 6584

JAVA-掌握DocumentEvent事件响应的处理方式。

要求: 编写应用程序,有一个标题为“计算”的窗口,窗口中添加两个文本区textInput和textShow,当在textInput中输入若干个数时,textShow同时对textInput中的数进行求和运算,并求出平均值 代码如下: package 实验6; public class test { public static void main(String args[]){ Windo...

丹妍同学的博客 693

【Java学习笔记】50:DocumentEvent事件的处理

简述 注意,不是文本区JTextArea能触发DocumentEvent事件,而是文本区的文档,即文本区使用getDocument()方法返回的文本对象,才是DocumentEvent事件的事件源。 一个类作为DocumentEvent事件的监听器类,需要实现DocumentListener接口,需要覆写其中的changedUpdate,removeUpdate和insertUpdate三个抽

大桔骑士的学习笔记 3668

DocumentEvent事件的应用

将用户在一个文本区输入的单词按字典序排好后放入另一个文本区,并添加菜单 example002类 package example; public class example002 { public static void main(String[] args) { WindowDocument win=new WindowDocument(); w...

weixin_34366546的博客 411

java设计四个按钮分别命名为,Java-2实用教程(第5版)习题解答

System.out.println(c); c=Math.exp(1); System.out.println(c); c=Math.log(8); System.out.println(c); } }5.public class E {public static void main (String args[ ]) { St...

weixin_27310417的博客 1297

Java笔记(10)-图形界面设计、Swing、窗口、JFrame、常用组件和布局、处理事件、MVC结构、对话框、GUI

Java Swing, JFrame,JMenubar,JMenu,JMenuItem,Icon,JMenuItem,组件JTextField,JTextArea,JLabel,JPanel,JScrollPane,JSplitPane,FlowLayout布局,BorderLayout布局,事ActionEvent,ItemEvent,DocumentEvent,MouseEvent,焦点事件,键盘事件,MVC结构

饮冰室人的博客 3万+

java中事件处理探究

事件的触发可以源于用户,也可以用代码来主动设置事件的发生.如setSelected()java.awt.event中 听众接口 事件类 适配器类 ComponentListener ContainerListener FocusListener...

weixin_30914981的博客 113

Java学习——blog 6

组件及事件处理 Java Swing概述 一、Swing特点 每个平台的GUI组件的显示会有所不同,但是在不同平台上运行使用Swing开发的应用程序时,就可以统一GUI组件的显示风格,因为Swing组件允许编程人员在跨平台时指定统一的外观和风格 Swing组件通常被称为“轻量级组件”,因为它完全由Java语言编写,而Java是不依赖于操作系统的语言,它可以在任何平台上运行,Swing的特点如下: 1、轻量级组件 2、可插入外观组件 二、Swing包 Swing包的层次结构和继承关系如下..

K_savo的博客 481
上一篇: java实用教程——组件及事件处理——ItemEvent事件(设置字体类型)
下一篇: java实用教程——组件及事件处理——MouseEvent事件
943802606
博客等级 码龄6年 1万+粉丝 177原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值