Как обработчики событий доступа к объекту создаются во время выполнения в Java Swing - PullRequest
1 голос
/ 30 мая 2019

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

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Вам нужно написать универсальный слушатель:

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

Возможно, создайте 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...