Получить возвращаемое значение из метода, который вызывается ActionListener - PullRequest
0 голосов
/ 25 мая 2020

В моей программе я добавил JFileChooser для выбора вложений:

public static String[] filechooser() {
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.showOpenDialog(null);
    File selectedFile = fileChooser.getSelectedFile();
    String[] fileinfo = { selectedFile.getName(), selectedFile.getPath() };

    return fileinfo;
}

Теперь я хочу, чтобы метод, вызываемый нажатием кнопки, был примерно таким:

 static class Action implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        mainprog.filechooser();
    }
}

Я знаю, как я назначаю Button для выполнения этого mainprog.filechooser() путем запуска ActionListener, но метод actionPerformed не предназначен для возврата чего-либо. К сожалению, мне нужно возвращаемое значение для метода FileChooser для чего-то позже в программе.

Есть ли лучший способ назначить кнопку методу, что-то, что дает возможность что-то вернуть, или есть ли хороший способ получить возвращаемое значение из ActionListener.

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Какое действие запускается кнопкой?

Держу пари, это не «Вызов FileChooser», а также не «Выбрать файл».

Я предполагаю, что это «Прикрепить файл».

Итак, ваш метод Action.actionPerformed() должен будет обновить тикет с вложением. Это означает, что он должен сам использовать возвращаемое значение filechooser().

«Действие» моделирует действия пользователя, а не что-то внутри вашего кода; и в данном случае это «Прикрепить файл», состоящий из шагов «Выбрать файл», «Загрузить файл», «Добавить файл в заявку».

0 голосов
/ 25 мая 2020

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

public static String[] response;

static class Action implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        response = mainprog.filechooser();
    }
}
...