首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java Swing FocusListener的MVC实现

名词解释

  1. Java Swing:Java Swing 是 Java 的一个图形用户界面(GUI)工具包,用于构建 Java 应用程序的图形界面。
  2. FocusListener:FocusListener 是一个接口,用于监听某个组件或窗口的焦点事件。当某个组件或窗口获得焦点时,会触发该接口的相应方法。
  3. MVC:Model-View-Controller(模型-视图-控制器)是一种软件设计模式,用于将应用程序划分为三个相互协作的组件:模型(数据存储和处理逻辑)、视图(用户界面)和控制器(处理用户输入和更新模型和视图)。

实现

在 Java Swing 中,可以通过实现 FocusListener 接口来监听组件或窗口的焦点事件。当焦点事件发生时,可以通过调用接口方法来处理相应的事件。

例如,在 MVC 模式中,当用户单击一个按钮时,可以通过调用 FocusListener 接口的 focusGained() 方法来处理组件或窗口的焦点事件。该方法将调用模型的相关方法来处理用户输入,并将结果更新到视图上。

具体实现可以参考下面的代码示例:

代码语言:java
复制
import javax.swing.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class MyController implements FocusListener {
    private JTextField textField;

    public MyController() {
        textField = new JTextField();
        textField.addFocusListener(this);
    }

    @Override
    public void focusGained(FocusEvent focusEvent) {
        // 处理焦点事件
        System.out.println("Focus gained on JTextField: " + focusEvent.getComponent());
    }

    @Override
    public void focusLost(FocusEvent focusEvent) {
        // 处理焦点事件
        System.out.println("Focus lost on JTextField: " + focusEvent.getComponent());
    }
}

在这个示例中,我们创建了一个名为 MyController 的控制器类,它实现了 FocusListener 接口。我们将其添加到 JTextField 组件中,并将焦点事件监听器设置为 MyController 实例。当用户单击文本字段时,焦点事件被触发,并打印消息以确认事件发生。

总之,通过实现 FocusListener 接口,我们可以监听 Java Swing 组件或窗口的焦点事件,并在事件发生时起动模型的相关方法来处理用户输入,从而完成 MVC 模式中的数据处理和用户界面更新。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java常用事件监听器与实例分析

我们知道在Java窗体中组件,本身是不具备任何功能,因此我们必须要给控件添加相应事件监听,才能在界面中触发相应事件处理,今天就来和大家分享一下在Java中常用几个事件监听器。...然而对于事件监听器,其实就是一个“实现特定监听器接口”类对象,事件几乎都以对象来表示,它是某种事件类对象,事件源(控件,如按钮)会在用户做出相应动作(如点击按钮)时产生事件对象, 在这里需要注意是...动作时间监听器 动作事件(ActionEvent)监听器是swing中比较常用一种监听器,在Java窗体中很多事件都需要使用它来进行监听,如我们常见按钮点击事件等,以下是动作事件监听器接口和常见事件源...java.awt.Container; import java.awt.Font; import java.awt.event.FocusListener; import javax.swing.JButton...在使用焦点事件监听器时,需要注意以下几点: 使用该监听器需要实现FocusListener接口 该接口中重写focusLost()方法是在组件失去焦点时调用

2.5K10

JavaSwing_8.1:焦点事件及其监听器 - FocusEvent、FocusListener

( FocusAdapter对象实现FocusListener接口。)每个此类侦听器对象获取此FocusEvent当事件发生时。 有两个焦点事件级别:持久性和暂时性。...对处理焦点事件感兴趣类 要么实现此接口(以及它包含所有方法) 要么扩展抽象FocusAdapter类(仅覆盖感兴趣方法) 然后,使用组件addFocusListener方法向组件注册从该类创建侦听器对象...(如果你实现 FocusListener 接口,则必须定义该接口中所有方法。此抽象类将所有这些方法都定义为 null,所以你只需针对所关心事件重写方法即可)。...java.awt.event.*; import javax.swing.*; public class FocusEventDemo extends JFrame implements...* Use an appropriate Look and Feel */ try { //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel

4.6K10

Java Swing Document类详解

Document是用于文本容器,用作swing文本组件模型。 此接口目标是从非常简单需求(纯文本文本字段)扩展到复杂需求(例如,HTML或XML文档)。...相反,文本通常具有与其相关联某种结构。 建模结构取决于特定Document实现。 它可能就像没有结构(即简单文本字段)一样简单,或者它可能类似于下图。 ?...插入或移除对文档结构影响完全取决于文档实现。...以下方法与文档内容变异有关: insertString(int, java.lang.String, javax.swing.text.AttributeSet) remove(int, int) createPosition...与属性相关方法是: getProperty(java.lang.Object) putProperty(java.lang.Object, java.lang.Object) 有关Document

2K41

Java 2 图形设计卷Ⅱ- SWING》第2章 Swing基本知识

虽然Swing是AWT扩展,但是两者基本概念还是有许多不同之处。首先,Swing小应用程序和应用程序实现方式与AWT小应用程序和应用程序实现方式有所不同。...因此,应当总是使用JApplet和JFrame来实现Swing小应用程序和应用程序。  ...2.1.2 JApplet类    SwingJApplet类扩展java.applet.Applet并实现Accessibility接口和RootPaneContainer接口。...毕竟,Java语言本身就内置了多线程特性,因此,就会有人主张应当以线程安全模式实现Swing。  ...然而,正是因为Java内置了对多线程支持,但这并不意味着在Java实现安全多线程小应用程序或应用程序是一件简单事情,更不用提工具包了。

2.4K20

JavaSwing 图形界面GUI王者级开发(大纲)

0 JavaSwing 简介 Java Swing 图形界面开发简介 1 布局管理器 JavaSwing_1.1: FlowLayout(流式布局) JavaSwing_1.2: GridLayout...: JTable(表格) JavaSwing_4.9: JTree(树) JavaSwing_4.10: JInternalFrame(内部窗口) 5 相关特性 JavaSwing_5.1: 组件位置和尺寸...绘图: 使用Graphics类绘制线段、矩形、椭圆/圆弧/扇形、图片、文本 Java图片操作 — 图片读取、绘制、缩放、裁剪、保存 Java代码截屏:使用 Java 代码截取电脑屏幕并保存 Java...模拟鼠标键盘输入事件 — Robot 类 Java操作桌面应用 — Desktop 类 Java操作系统剪贴板(Clipboard)实现复制和粘贴 7 更多操作 如何在Swing组件中使用HTML...8 事件及其监听器 焦点事件及其监听器 - FocusEvent,FocusListener

1.3K10

基于java swing设备管理系统

二.开发环境 开发环境:jdk          运行环境:jvm 运行平台:无限制        编辑器:eclipse 语言:java            工具:swing 数据库:mysql 三...e_buy表 (记录购买设备信息) ? e_run表 (记录正在运行设备信息) ? e_scrap表 (记录报废设备信息) ? e_repair表 (记录修理设备信息) ?...,会弹出相应对话框,记录对应状态所需要登记信息Info (2)buy负责登记购买设备信息 (3)running负责显示正在运行设备信息 (4)repair负责显示正在修理设备信息 (5)scrap...负责显示已报废设备信息 选项卡中equipment和buy界面由ManageFrame负责创建,对应方法为createEquipmentPanel()和createBuyPanel(),通过返回自定义...ComponentUtil 包含自定义一些常用swing组件 ConnectionUtil 数据库连接类 DatabaseXmlParser 解析db.xml,获取数据库配置信息 DateChooser

2.6K81

JavaJava使用Swing实现一个模拟计算器(有源码)

一、源码 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.text.DecimalFormat...; import java.util.function.ToDoubleBiFunction; public class MyCalculator { private JFrame frame...除了我们按钮之外,还有我们输出显示窗口resultText,输出结果我们都用resultNum来记录,之后在放到我们输出窗口上。 其他都写成注解了。...3.添加按钮事件监听机制 当我们点击计算机上按钮时候,计算器要给出反馈,这时就需要我们添加一个事件监听机制了。注释写好了,当我们点击不同按钮时候要处理不同功能。...倘若点了退格键那我们就把面板上文字域删掉一个符号。比如我们输入是111,点了退格之后就是11,当然你会想这只是文字域变化,那我们保存要计算值为什么不变?

9210

Java Swing + Mysql球员信息管理系统

一、数据库设计首先的话,基于这个FIFA球员管理系统需求来看,只需要一个球员表baller就足够了,然后里面包含属性应该有数据id,也就是这一条记录id,然后就是球员球号(bid),还有球员名字...添加菜单对应就是Add类,然后还有修改菜单Alter类,删除菜单对应DelMin类,按姓名查询对应NameQue类,和按球号查询对应IdQue类,和模糊查询对应LikeQue类。...这些都是需要我们去重写.然后还有就是当添加球员时候,需要有一个保存球员信息到数据库方法,这里对应就是saveTo方法。...完整类图如下:这里还有最关键一点就是说,球队名称的话,这里是写死了一个数组在这里,teams数组代表就是球队名称。...要想实现该功能的话,主要在于拼接sql字符串和判断球员输入来进行一个拼接字符串查询。

20900

JAVA学习中Swing概述中JFrame学习

package com.swing; import java.awt.Color; import java.awt.Container; import java.awt.event.WindowAdapter...; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.WindowConstants...; /**  *1:Swing组件通常被称作"轻量级组件";  *  *2:窗体作为Swing应用程序中组件承载体,处于非常重要位置,Swing中常用窗体包括  *JFrame,JDialog... *  *3:JFrame窗体是一个容器,它是Swing程序中各个组件载体,可以将JFrame看作是承载这些  *Swing组件容器  *  *4:读者大致应该有这样一个概念  *Swing组件窗体通常和组件容器相关...,实例化JLabel对象,然后将标签实例添加到容器中,然后可以设置容器布局, package com.swing; import java.awt.Color; import java.awt.Container

1.6K90
领券