Предоставление JmenuItems, загруженных из текстового файла, действия

Я загружаю JmenuItems из текстового файла, используя этот код

FileInputStream wordsFile = new FileInputStream(signlink.findcachedir() + "/Playlist.div");
        BufferedReader br = new BufferedReader(new InputStreamReader(wordsFile));
        String[] favoriteSongs = new String[15];
        for (int i = 0; i < favoriteSongs.length; i++) {
            favoriteSongs[i] = br.readLine();
            if (favoriteSongs[i] != null) {
                System.out.println(favoriteSongs[i]);
                JMenuItem song = new JMenuItem(favoriteSongs[i]);
                song.addActionListener(this);
                favorites.add(favoriteSongs[i]);
            } else { 
                wordsFile.close();
                break;
            }
        }   

Как добавить действия для JmenuItems


person Ravekitty    schedule 09.10.2013    source источник
comment
Вы уже добавляете ActionListener из текущего курса   -  person Reimeus    schedule 10.10.2013
comment
И как бы я давал действия пунктам меню из ActionListener   -  person Ravekitty    schedule 10.10.2013
comment
Вы можете указать команду действия для каждого пункта меню, что позволит лучше идентифицировать действие, которое пользователь только что выбрал.   -  person MadProgrammer    schedule 10.10.2013
comment
Кажется, он не распознает ни одну из нажатых кнопок   -  person Ravekitty    schedule 10.10.2013
comment
Я знаю, что этому месяц, но если вы еще не поняли, не могли бы вы обновить свой вопрос, указав еще немного своего кода? На данный момент мы не знаем, как выглядит ваш прослушиватель действий, и я нигде не вижу, где ваши новые пункты меню добавляются в меню.   -  person Bastiat    schedule 12.11.2013


Ответы (1)


Я не уверен, что правильно вас понял, но: вы добавили список действий 'song.addActionListener(this)', так что это означает, что в вашем классе есть переопределенный метод из интерфейса, вам нужно поместить туда некоторую логику, и она должна работать, т.е.

@Override
public void actionPerformed(ActionEvent e) {
    JMenuItem item = (JMenuItem) e.getSource();
    String song = item.getText();
    listOfSth.add(song);
}

Или вы можете создать новый класс, реализующий ActionListner, и добавить его в созданный MenuItem.

    JMenuItem l = new JMenuItem();
    l.addActionListener(new CustomActionListener());
person HuTa    schedule 09.10.2013