У меня есть созданная на заказ 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 из них, поэтому также не могу получить доступ к ее прослушивателям событий.
Как я могу этого добиться?
Возможно, создайте 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.
Надеюсь это поможет.
Вам нужно написать общий слушатель:
getSource()
для получения источника события.getParent()
.