public void actionPerformed(ActionEvent event) {
red.addActionListener(e -> {
getContentPane().setBackground(Color.RED);
});
green.addActionListener(e -> {
getContentPane().setBackground(Color.GREEN);
});
blue.addActionListener(e -> {
getContentPane().setBackground(Color.BLUE);
});
clear.addActionListener(e -> {
getContentPane().setBackground(null);
});
}
在本期节目中:
package com.IST242Apps;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ColorFrame extends JFrame{
JButton red, green, blue, clear;
public ColorFrame() { //frame parameters
super("ColorFrame");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flo = new FlowLayout();
setLayout(flo);
//create buttons
red = new JButton("RED");
add(red);
green = new JButton("GREEN");
add(green);
blue = new JButton("BLUE");
add(blue);
clear = new JButton("CLEAR");
add(clear);
//Something starts here -- the inner class?
ActionListener act = new ActionListener() { //
public void actionPerformed(ActionEvent event) { //when button is clicked
red.addActionListener(e -> {
getContentPane().setBackground(Color.RED); //make red
});
green.addActionListener(e -> {
getContentPane().setBackground(Color.GREEN); //make green
});
blue.addActionListener(e -> {
getContentPane().setBackground(Color.BLUE); //make blue
});
clear.addActionListener(e -> {
getContentPane().setBackground(null); //make clear
});
}
};
//comment: something ends here
//execute lambda expressions
red.addActionListener(act);
green.addActionListener(act);
blue.addActionListener(act);
clear.addActionListener(act);
setVisible(true); //make visible
}
public static void main(String args[]) {
new ColorFrame();
}
}
作为lambda表达式。然而,我对如何实际用lambda表达式替换内部类感到困惑,因为我以前从未这样做过。
如果您也能解释lambda表达式是如何工作的,就像我在W3Schools上看到的那样。
//numbers.foreach(n)->{system.out.println(n);});
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
numbers.forEach( (n) -> { System.out.println(n); } );
(1)你引用了一些东西。(数字)
(2)表示某种命令。(forEach)
(3)设置参数(n)
(4)表示一些要执行的代码。({system.out.println(n);})
//n只是引用一个不存在的变量吗?
ActionListener act = event -> { //when button is clicked
red.addActionListener(e -> {
getContentPane().setBackground(Color.RED); //make red
});
green.addActionListener(e -> {
getContentPane().setBackground(Color.GREEN); //make green
});
blue.addActionListener(e -> {
getContentPane().setBackground(Color.BLUE); //make blue
});
clear.addActionListener(e -> {
getContentPane().setBackground(null); //make clear
});
};
我在JavaFX上有一个应用程序。在这个应用程序中,我需要实现专栏的编辑器。在旧版本中,该代码运行良好: 但是当我试图用lambda重写代码时 我得到一个错误:错误:java:不兼容的类型:lambda表达式中的不兼容参数类型告诉我如何指定lambda表达式的类型?
目前我学习Springboot。 在这个代码中 我知道这是lambda表达式,但我没有得到原始代码。这不是我的代码。你能让我知道原始代码吗?
问题内容: 如果我列出两个函数列表: 为什么名单,并没有保存的行为方式? 例如: 问题答案: 从技术上讲,lambda表达式是在全局范围(最后设置为9)中可见的那一端 关闭的 。在所有10个lambda中都引用 相同的内容 。例如, __ 在函数中,lambda在调用函数时关闭。那是十个 不同 的。
问题内容: 我想了一下,想到了一个有趣的问题,假设我们有一个配置(输入)文件,其中: 此外,我们还有s 的列表: 有没有办法将s(等)转换为代表lambda表达式的s?然后可以用作: 我将如何编写这样的方法? 我可以从JDK / JRE中重用吗? 我需要自己编写所有内容吗? 是否有可能将范围缩小到仅捕获lambda的其他内容? 问题答案: 马可对这个问题的评论是正确的。您无法从文件中读取裸Java
我在Java 1.8中有以下代码。 如果没有lambda,如何将其转换为Java 1.7代码?
我在这里有一段代码,基本上只是创建一个等于参数的线程数,在每个线程中实例化一个MyRunnable对象,将线程添加到线程列表中,然后根据for循环的迭代设置线程的名称。 我的问题是,有没有更干净的方法?是否可以使用流将此功能封装在lambda中?