有一段时间前,我用Java编写了一个小型图像浏览器/处理程序,类似于迷你版Photoshop。
我想要一个下拉菜单,可以从我打开的图像中选择要“放在桌面上”的那个,即显示并应用方法。我希望图像的名称是菜单中JMenuItem的名称。同时,当我添加新图像时,我也希望出现一个新按钮。
我思考了很长时间,最终产生了这个解决方案,一个处理新按钮创建的新类,代码如下:
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class ImageList{
private ArrayList<JMenuItem> list;
private ImageHandler main;
private ImageLevel img;
public ImageList() {}
public void setHandler(ImageHandler hand) {
main = hand;
img = main.getImg1();
}
public void add(Buffer addi) {
final String added = addi.getName();
JMenuItem uusi = new JMenuItem(added);
main.getMenu5().add(uusi);
uusi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
img.setBuffer(added);
main.getScr().updateUI();
}
});
}
}
这个功能正常工作。对于这个网站,我将原来的芬兰语名称翻译成了英语,不知道为什么我最初用芬兰语写它们...我很擅长给事物命名。
方法add应该在程序运行时被多次调用。
我真正无法理解的是接口ActionListener的内部类实现,即其编译和工作原理。
如果我的界面上有两个按钮,我希望它们做不同的事情,我需要两个内部类,每个内部类都有自己的接口ActionListener的内部实现。但是在我的代码中,有一个类似于许多工作的类,只有一个已编译的.class文件,但最终结果的工作方式就好像有很多个。
有人能教我这个问题吗?这段代码是一个类,新按钮是它的实例吗?它们是新类吗?每个新按钮都应该有一个新的.class文件吗?等等...
new
是一个保留字,因此您应该为JMenuItem变量使用其他名称。 - assyliasFileMenu
](https://dev59.com/YW855IYBdhLWcg3w_5qm#4039359)中所示。 - trashgod