gpt4 book ai didi

java - 通过点击特定标签来调用与arrayList中的对象相关的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:37 25 4
gpt4 key购买 nike

我正在尝试在我正在开发的项目中实现一项功能,但遇到了困难。该项目允许用户创建 3 个不同的对象,它们都共享相同的父类(super class)。每个对象都是 arrayList 的一部分,并由 JLabel 内的 ImageIcon 表示。我希望能够单击特定的 JLabel 并使用 toString() 方法打开消息对话框,该方法返回有关相应对象的信息。

到目前为止,我有一个(实现不佳的)系统,该系统允许用户单击任何 ImageIcon,但它只会显示有关最近创建的对象的信息。我知道为什么此代码只显示它所显示的信息,但我不知道如何创建我需要的代码。

如果有人能提供帮助,我将不胜感激。如果有任何解释不清或需要详细说明的内容,请询问。我在下面附上了我当前的代码,谢谢。

代码解释:“count”变量用于计算创建的对象数量(我不能超过 9 个)。我知道当前的代码只会显示创建的“count-1”对象(这是最新的)。我只是不知道需要做什么才能找到与单击的标签相关的特定对象。

label[count].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e)
{
JOptionPane.showMessageDialog(null, myAppliances.get(count-1).toString());
}});

最佳答案

Each object is part of an arrayList and is represented by an ImageIcon inside of a JLabel.

这给了一个很好的暗示。执行以下操作怎么样

MyObjectLabel 类扩展了 JLabel,如下所示:

public MyObjectLabel extends JLabel
{
private YourObjectThatisInList localCopyOfObject;
public MyObjectLabel (YourObjectThatisInList object)
{
super(createIconForTheObject(object));
this.localCopyOfObject=object
}
//add getter setter method for localCopyOfObject
}

2) 现在向此类添加监听器。

3) 在触发此新 Label 类的事件时,调用 localCopyOfObject 的 getter 并显示存储在 MyObjectLabel 中的 localCopyOfObject 的 toString。

请注意,createIconForTheObject 只是我展示的一个占位符方法。您可以使用自己的方法来创建图标

谢谢

关于java - 通过点击特定标签来调用与arrayList中的对象相关的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369942/

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