gpt4 book ai didi

java - 匿名类变成内部类

转载 作者:搜寻专家 更新时间:2023-11-01 02:32:53 26 4
gpt4 key购买 nike

我被要求将匿名按钮类转换为内部按钮类。我要阅读的文本使用包含 ActonListener 的示例讨论了这个主题。但是,我被要求修改的代码中没有 ActonListener。所以我很难按照我应该做的去做。我如何使用以下代码并将匿名转换为内部类。我的按钮代码中甚至有一个匿名类吗?

警告:不要只为我输入答案。我需要学习这个。请帮我指出正确的方向。

这是我的代码:

package ui.panels;

import java.awt.Panel;

import interfaces.Resettable;
import model.Model;
import ui.panels.ButtonPanel;

public class ControlsPanel extends Panel implements Resettable{
private ButtonPanel btnPanel;

public ControlsPanel (Model model) {
btnPanel = new ButtonPanel(model);
add(btnPanel);
}

public void resetComponents() {
}
}

这里是“ButtonPanel.java”

package ui.panels;

import java.awt.Button;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.Model;

public class ButtonPanel extends Panel {
private Button btnClear;

public ButtonPanel(final Model model) {
btnClear = new Button("Clear");
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
model.resetComponents();
model.repaint();
}
});
add(btnClear);
}
}

最佳答案

按钮不是匿名的,但 Action 监听器是。具体来说:

btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
model.resetComponents();
model.repaint();
}
});

在这里,您将调用方法 addActionListener,并将 ActionListener 的实现作为参数传递。这里的关键是这个实现是一个内联实现接口(interface)的匿名类

请记住,ActionListener 是一个接口(interface),接口(interface)不能包含实际实现。相反,正在发生的事情是声明一个新类(没有名称)实现 ActionListener。该接口(interface)定义了一个方法,actionPerformed,它是按钮的实际处理程序——它调用 resetComponentsrepaint。通过实现 actionPerformed,可以将它变成一个新的 normal 类,它实际上有一个名称,继续实现 ActionListener

关于java - 匿名类变成内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5023914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com