Можно ли добавлять слушателей к объектам без ссылочного имени? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть следующее GUI:

enter image description here

Как видите, панели с зеленой и желтой рамками имеют одинаковый формат. 2 ярлыка и кнопка. Я создал их, используя следующую функцию, которую я вызываю для другой функции, используя предложение for, чтобы создать несколько таких панелей:

private JPanel subject (int id, String name, int credits, boolean optional) {
        JPanel main = new JPanel();

        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
        if (optional) {
            main.setBorder(BorderFactory.createTitledBorder(new LineBorder(Color.YELLOW, 1), "("+id+")"));
        } else {
            main.setBorder(BorderFactory.createTitledBorder(new LineBorder(Color.GREEN, 1), "("+id+")"));
        }

        JPanel namePanel = new JPanel();
        namePanel.setLayout(new FlowLayout());
        namePanel.add(new JLabel(name));

        JPanel creditsPanel = new JPanel();
        creditsPanel.setLayout(new FlowLayout());
        creditsPanel.add(new JLabel(credits + " credits"));

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new FlowLayout());
        buttonPanel.add(new JButton("Add to favorites"));   //Here I add the button to the main panel


        main.add(namePanel);
        main.add(creditsPanel);
        main.add(buttonPanel);

        return main;    //I return the panel to add it to the frame
    }

JButtons в панелях создаются, но не назначаются имя.

Как добавить слушатель действия для каждой кнопки на каждой создаваемой панели?

Должен ли я создать ссылочное имя для кнопки в функции, чтобы сделать это?

Обратите внимание, что все кнопки выполняют одинаковые действия, но не одно и то же.

1 Ответ

0 голосов
/ 08 марта 2020

То, что вы собираетесь сделать, - это создать инициализируемый член класса или локальный член, а затем назначить прослушиватель для этой конкретной кнопки c. В качестве альтернативы вы можете создать функцию, которая добавляет кнопку на панель и назначает ей слушателя.

...