首页 > 解决方案 > java - 如何在java swing中访问在运行时实例化的对象的事件侦听器

问题描述

我有一个定制的 JPanel itemSmallCard(String prodID, String productName, String price, String retailer),使用它我在另一个 JPanel 中创建了它的多个实例,在按钮的 ActionPerformed 事件上具有不同的参数,如下所示:

JPanel iC = new itemSmallCard("123456789ab", "Inspiron 7567 Intel Core i5 DELL Laptop", "48957", "Cloudtail Pvt. Ltd.");
        mainContentPane.add(iC);
        mainContentPane.revalidate();
        mainContentPane.repaint();

但是,由于所有新的 JPanel 都是使用相同的变量使用相同的代码创建的iC,我不知道如何从它们访问特定的 JPanel 变量,因此也无法访问其事件侦听器。我怎样才能做到这一点?

标签: javaswingvariablessubclassevent-listener

解决方案


您需要编写一个通用侦听器:

  1. 在侦听器代码中,您使用该getSource()方法来获取事件的来源。
  2. 一旦知道了源组件,就可以使用组件的getParent()方法。
  3. 现在您可以访问面板,并且可以访问面板的任何方法/变量。

推荐阅读