When testing JButton my lambda expression works, but actionPerformed does not(在测试JButton时,我的lambda表达式可以工作,但actionPerform不能)
问题描述
我在YouTube上关注tutorial,这是我第一次学习如何使用Java Swing。我已经到达了介绍按钮的部分,并且一直按照代码一直到T。但是,在尝试测试按钮以使其打印出单词&[2-0]>时,我的按钮无法打印出该单词。
您可以在此处找到该测试的原始代码:
Main.Java
package com.learnjava;
public class Main {
public static void main(String[] args) {
new MyFrame();
}
}
MyFrame.java
package com.learnjava;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame extends JFrame implements ActionListener{
JButton button;
MyFrame() {
JButton button = new JButton();
button.setBounds(200, 100, 100, 50);
button.addActionListener(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setLayout(null);
this.setVisible(true);
this.add(button);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button) {
System.out.println("test");
}
}
}
每当我使用前面的代码按下按钮时,它都不会打印出单词&test";。如果我使用lambda表达式,它会起作用。
MyFrame.java(使用lambda表达式更新)
package com.learnjava;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame extends JFrame implements ActionListener{
JButton button;
MyFrame() {
JButton button = new JButton();
button.setBounds(200, 100, 100, 50);
button.addActionListener(e -> {System.out.println("test");}); // updated with lambda expression
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setLayout(null);
this.setVisible(true);
this.add(button);
}
}
我一直在尝试在网上寻找以前的代码为什么不能工作的原因。我看过一个question,但没有人回复。虽然我可以使用lambda表达式来代替,但我仍然希望了解如果我做错了什么,如何正确地编写前面的代码。提前感谢!
注意:如果出于某种原因相关,我使用的IDE是IntelliJ,而我的JDK是版本12。
推荐答案
更改:
JButton button = new JButton();
收件人:
button = new JButton();
第一个是隐藏类属性的局部变量。
第二个类具有相同的问题,但由于它(按钮创建、添加侦听器、将其添加到图形用户界面)都是在一个代码部分中完成的,因此并不明显地从未使用类属性。
这篇关于在测试JButton时,我的lambda表达式可以工作,但actionPerform不能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在测试JButton时,我的lambda表达式可以工作,但actionPerform不能
基础教程推荐
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01