今天来和大家总结一下有关在进行Java的GUI编程时常用的事件监听函数的基本作用和功能。...在swing事件模型中由三个分离的对象完成对事件的处理,分别为事件源、事件和监听程序,由事件源触发一个事件,它由一个或多个监听器进行监听,并且由监听器触发事件并执行相应的事件。...在Java中常用的两种事件监听器是“动作事件监听器”和“焦点事件监听器”。接下来我和大家分别分享一下这两种常用的事件监听机制。...动作时间监听器 动作事件(ActionEvent)监听器是swing中比较常用的一种监听器,在Java窗体中很多事件都需要使用它来进行监听,如我们常见的按钮点击事件等,以下是动作事件监听器的接口和常见的事件源...对于动作事件监听器在这里要注意的两点: 在重写的actionPerformed()函数中应该对单击的控件进行判断,判断是否是单击了该控件。
在Java开发中,java.util.TooManyListenersException是一个常见的异常,特别是在处理事件监听器时。...许多Java类(如JButton、JTextField等Swing组件)允许我们为其添加事件监听器(如ActionListener、MouseListener等),以便在特定事件发生时执行某些操作。...例如,在处理自定义事件时,某些自定义事件源类可能只支持一个监听器。当多次调用addXxxListener方法时,就会导致异常。...System.out.println("Listener 2 executed."); } }; // 添加第一个监听器...使用复合模式:如果需要执行多个动作,可以将这些动作整合到一个监听器中,而不是为每个动作注册单独的监听器。 事件模型设计:在设计自定义事件源时,明确监听器的数量限制,并在文档中注明,以避免误用。
这里需要注意,在Java中,要确保所捕获的值是明确定义的,这里有一个重要的限制。在lambda表达式中,只能引用值不会改变的变量。...ActionListener实例的方法。...之所以希望以后再执行代码,这有很多原因,如: 在一个单独的线程中运行代码 多次运行代码 在算法的适当位置运行代码 发生某种情况时执行代码 只在必要时才会去运行代码 假如我们想要重复一个动作n次,将这个动作和重复次数传递到一个...; 要接受这个lambda表达式,需要选择(偶尔可能需要提供)一个函数式接口。下面中列出了 Java API 中提供的最重要的函数式接口。...排列方式如下: 函数式接口:参数类型,返回类型,抽象方法名,描述,其他方法 。 Runnable:无,void,run,作为无参数或返回值的动作进行。
对于按钮来说,动作事件就是点击按钮。 上面的代码要求监听器对象所属的类必须实现相应的接口(在这个例子中是ActionListener接口)。...我们更加倾向于为将要执行的按钮动作创建一个新类和该类的对象。然而,有些程序员不愿意使用内部类,而是选择了不同的策略。...无论是命名方法,还是接口的所有方法都将执行目标对象上的给定动作。 动作可以是一个方法名或目标的属性。如果是属性,执行它的设置方法。例如,动作"text"将变为调用setText方法。...第一个属性从监听器方法的参数中读出。 第二个属性由结果对象读出等等。最后的结果将作为动作的参数。例如,属性"source.text"将变为调用getSource和getText方法。...我们遵循前一节的建议,使用辅助方法makeButton和匿名内部类指定按钮动作,即切换观感。 在这个程序中,还有一点需要注意的地方。
在Java引入lambda表达式之前,并不能在Java中传递一个代码段。因为Java是严格的面向对象编程,所以必须构造一个对象,这个对象的类需要有一个方法来包含所需的代码。...函数式接口: Java在不支持lambda表达式之前,已经存在很多封装代码块的接口,如Comparator, lambda表达式和这些接口是兼容的。...在Java中,lambda表达式就是闭包。 在Java中,要确保捕获的值是明确定义的,且有一个重要的限制:lambda表达式要捕获的变量必须是实际上的最终变量(该变量初始化之后不会再为它赋新值)。...补充: 什么时候使用lambda表达式: 在一个单独的线程中运行代码 多次运行代码 在算法的适当位置运行代码(例如排序中的比较操作) 发生某种事件时执行代码 只在必要时才运行的代码 常用的函数式接口:...函数式接口 参数类型 返回类型 抽象方法名 描述 Runnable 无 void run 作为无参数或返回值的动作执行 Supplier 无 T get 提供一个T类型的值 Consumer
背景 不过有些 Java 对象只是对单个函数的封装。...void actionPerformed(ActionEvent e); } 这里并不需要专门定义一个类来实现 ActionListener 接口,因为它只会在调用处被使用一次。...它里面包含了常用的函数式接口,例如: Predicate: 接收 T 对象并返回 boolean; Consume: 接收 T 对象,不返回值; Functio 三. lambda 表达式 lambda...其中函数体既可以是一个表达式,也可以是一个语句块: 表达式:表达式会被执行然后返回执行结果; 语句块:语句块中的语句会被依次执行,就像方法中的语句一样; return语句会把控制权交给匿名方法的调用者...如果待实例化的类型是泛型的,那么我们可以在类型名称之后提供类型参数,否则编译器则会依照”菱形”构造方法调用时的方式进行推导。
void addActionListener(ActionListener listener):将指定的动作侦听器添加到按钮上。...addActionListener(ActionListener listener):为文本框添加动作监听器,当用户敲击回车键时触发动作事件。...addActionListener(ActionListener listener):为JCheckBox添加动作监听器。...removeActionListener(ActionListener listener):移除JCheckBox的动作监听器。...addActionListener(ActionListener listener):为下拉列表添加一个动作监听器。
GUI的各种元素(如:窗口,按钮,文本框)由Java类实现。 使用AWT所涉及的类一般在 java.awt 包及其子包中。 Container 和 Component 是AWT中的两个和心态。...的GUI提供的对象都存在 java.Awt 和 javax.Swing 两个包中. * * java.Awt:Abstract Window ToolKit(抽象 窗口工具包) * 需要调用本地系统方法实现功能...与该事件对应的事件类是 java.awt.event.ActionListener接口的类的对象。...时,会生成一个 ActionEvent 对象,该对象作为参数传递给 ActionListener 对象的 actionPerformer 方法在方法中可以获取该对象的信息,并做相应的处理。...System.out.println(code+"....非法的输入"); e.consume(); //不执行加入文本框
使用Java和C#开发交互界面,最大的区别就是: C#的交互界面的实现是可以在设计模块中直接添加控件并设置其属性,同时还会生成与控件所绑定的控件函数的, 而Java则不同,Java的窗体和控件都需要使用代码来设置的...,包括控件尺寸、字体、颜色、位置坐标等都是根据特定的函数来写出来的,同时Java中的控件在最开始的时候是没有函数与其绑定的,这就需要我们根据开发需求,为控件设定相应的监听函数。...控件触发时集中处理函数 首先是定义控件触发时的集中处理函数,该函数的功能上可以根据实际情况分为两部分,第一部分是在我们没有点击运算操作符前,点击数字控件所触发的事件,也就是我们在输入一个数值时要做的事情...你可能会问,为什么不直接使用INumfirst接收第一个数据,使用INumsecand接收第二个数据,原因是因为,当你点击数字控件时,我们无法判断你输入的数据是第一个数据还是第二个数据,我们只能将你输入的数据统一的赋值给某一个变量...之后我们只需要在主方法中调用该函数即可实现Java计算器的运行, .
元素, 事件, 监听器 我们在GUI一文中提到了许多图形元素。...我们将动作放在一个监听器(ActionListener)中,然后让监听器监视(某个图形对象)的事件。当事件发生时,监听器中的动作随之发生。 ?...在点击按钮之后,面板的颜色会改变,如下图: ? ...这样做是为了让监听器能更方便的调用图形对象的成员,比如setBackground()方法。 ActionListener的actionPerformed()方法必须被覆盖。该方法包含了事件的对应动作。...当有事件发生时,对应动作将随之产生。 总结 ActionListener interface ActionEvent class
\ MouseAdapter //鼠标适配器 KeyAdapter //键盘适配器 ActionListener //动作监听 适配器设计模式: 在使用监听器的时候, 需要定义一个类事件监听器接口....Frame f = new Frame("我的第一个Title!")...void addActionListener(ActionListener l) //添加指定的操作侦听器从该按钮接收动作事件。...void removeActionListener(ActionListener l) //移除指定的动作侦听器,以便它不再从该按钮接收动作事件。...int getBlue/Red/Green() 返回默认的sRGB空间范围在0-255的蓝色分量 getColor(String nm, Color v)在系统属性中查找颜色,第一个参数被视为要获得的系统属性的名称
在以前,jdk刚发布后一段时间,一个支持的IDE才产生。但这次不同了,也可能由于openjdk提供的透明和应用广泛的jdk有关。几天前,JetBrain第一个支持java8的IDE发布了。...从返回值来看,一个lambda表达式可以是无返回值的--它们不返回任何结果,或者是有返回值的--在表达式里面的某个执行语句返回一个值。...一个功能性接口就是一个只含有抽象方法的接口,只是声名了一个函数。在某些场合下,这个唯一的函数可能是一个带有重载因子的的多态函数,这种情况下,所有的函数对外都是一个函数。...不见得——JDK8提供了一个别名机制,允许类或者对象的方法“调用”。用一个新增的操作符::可以做到。他可以应用到静态方法或者对象方法的调用。同样也可以应用于构造函数。...通过提供lambda表达式,将会在内部被执行,这样,就可以充分利用多核处理器的功能了。 铂金小猫 翻译于 8天前 顶 翻译的不错哦!
添加事件操作 添加下拉框事件 为了使下拉框变化时,JLabel中的值也能相应的变化,向下拉框添加动作监听器. ?...public CurrencyConverter() { comboBox1.addActionListener(new ActionListener() { @...moneyTypeLabel.setText(" "+comboBox1.getSelectedItem()); } }); }//end CurrencyConverter() 添加main函数...添加按钮事件 思路:点击这个按钮之后将前一个TextField中的值读取出来乘以其和JCombox中国家币种得汇率,得到的结果输出到第二个TextField中....完整代码 import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
反映到计算机上,你可以把某个代码写好,然后告诉某个对象比方说button,当button一执行,就让他自动调用你写好的代码,这样对计算机的压力就并不是很重,这个叫钩子函数,也叫回调函数 import java.awt...actionPerformed(ActionEvent e) { System.out.println("a button has been pressed"); } } 当事件发生时,就会自动调用...actionPerformed函数,参数是一个事件对象,这个对象中包装了很多关于事件的信息,比方说发生的时间,发生的情况等等 ?...MouseEvent java中事件监听的接口名称都非常有规律,监听动作的叫ActionListener,监听鼠标的叫MouseListener,监听键盘的叫KeyListener MouseLinsenter...上点击一下就会在当前位置点出一个点,需要注意的是,repaint方法的执行过程可以理解为:update()->paint(),首先更新,然后画点,所以repaint方法在画图的时候必须加上 ?
在JAVA中,你可以通过在菜单项构造器中指定一个快捷字母来为菜单项设置快捷键,如: JMenuItemitem=new JMenuItem("Cut",'t'); 有时候,你不想在菜单项的第一个匹配快捷键的字母下面画下划线...它是Java技术容器(container)的一种特定类型,其执行方式不同于应用程序。一个应用程序是从它的main()方法被调用开始的,而一个JApplet的生命周期在一定程度上则要复杂得多。...禁止执行另一程序和不允许调用本地方法限制了Applet启动未经JVM检查的代码。对Socket的限制则禁止了与另一个可能有危害性的程序的通信。...n 初始化完后,紧接着调用start()方法,开始执行 n 由于JApplet类也是Panel类的子类,所以也会调用paint()方法 n 当浏览器最小化的时候调用...; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.awt.event.InputEvent
3,2,5,4,10,0).sortWith(_<_) // 结果: 0 2 3 4 5 10 // Array[Int] = Array(0, 2, 3, 4, 5, 10) 闭包 闭包最简洁的解释:函数在变量不处于其有效作用域时...由于 Scala 是可以调用 Java 的代码的,因此当我们调用 Java 的某个方法时,可能就不得不创建 SAM 传递给方法,非常麻烦;但是 Scala 又是支持直接传递函数的。...此时就可以使用 Scala 提供的,在调用 Java 方法时,使用的功能,SAM 转换,即将 SAM 转换为 Scala 函数。 要使用SAM转换,需要使用 Scala 提供的特性,隐式转换。...._ import java.awt.event._ val button = new JButton("Click") button.addActionListener(new ActionListener...在函数调用的过程中,就变为了两个函数连续调用的形式。
GUI事件处理机制 定义: 当在某个组件上发生某些操作的时候,会自动的触发一段代码的执行。...注册监听:把某个事件监听器(A)通过某个事件(B)绑定到某个事件源(C)上,当在事件源C上发生了事件B之后,那么事件监听器A的代码就会自动执行。...案例: 完成下图效果,点击确定按钮,在单行文本域内显示 hello world: import java.awt.*; import java.awt.event.ActionListener;...事件 AWT把事件分为了两大类: 1.低级事件:这类事件是基于某个特定动作的事件。比如进入、点击、拖放等动作的鼠标事件,再比如得到焦点和失去焦点等焦点事件。...事件 触发时机 ActionEvent 动作事件 ,当按钮、菜单项被单击,在 TextField 中按 Enter 键时触发 AjustmentEvent 调节事件,在滑动条上移动滑块以调节数值时触发该事件
实现代码: import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import...java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu...当前按下的变量 public Calculator() { this.setBounds(0, 0, 500, 500); this.setLocationRelativeTo(null);// 让窗口在屏幕中间显示...= sb.charAt(j); k++; } } // 计算结果 double result = 0; for (int i = 0; i < commandCount; i++) { // 取前两个数...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
领取专属 10元无门槛券
手把手带您无忧上云