Как получить доступ к прослушивателям событий объекта, созданного во время выполнения в 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 из них, поэтому также не могу получить доступ к ее прослушивателям событий. Как я могу этого добиться?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Возможно, создайте ArrayList (если вам не нужен доступ к конкретным, не зависящим от местоположения).

ArrayList<JPanel> panels = new ArrayList<JPanel>();

Или, если вам нужно получить к ним доступ, вы можете создать «HashMap» и сохранить там идентификатор, который у вас есть.

WeakHashMap<String, JPanel> panels = new WeakHashMap<String, JPanel>();

panels.put("123456789ab", new itemSmallCard("123456789ab", "Inspiron 7567 Intel Core i5 DELL Laptop", "48957", "Cloudtail Pvt. Ltd.");// Adds a product with that info

panels.get("123456789ab"); // Returns the panel with that ID.

Надеюсь это поможет.

Вам нужно написать общий слушатель:

  1. в коде прослушивателя вы используете метод getSource() для получения источника события.
  2. Как только вы узнаете исходный компонент, вы можете использовать метод компонента getParent().
  3. Теперь у вас есть доступ к панели и вы можете получить доступ к любому методу/переменной панели.

Другие вопросы по теме