Доступ к переменной из ActionListener и перенос ее в новый метод - PullRequest
0 голосов
/ 26 марта 2020

Я немного занимался Java, но даже иногда форматирование методов и переменных может сбить меня с толку, в зависимости от обстоятельств. Я чувствую, что это, вероятно, простое исправление, но по какой-то причине я застрял на нем. У меня есть ActionListener, прикрепленный к кнопке в JDialog. Когда этот метод ActionListener активирован, он создает строку dateAndTime, а также несколько компонентов, связанных с классом TimerTask, из пакета Timer (я рассматриваю возможность их удаления вместо ScheduledExecutorService , но не берите в голову это). Я понимаю, что могу объявить глобальную переменную в своем классе вне каких-либо методов, и я могу создавать параметры, которые передаются методам, значения которых обновляются локально внутри этих методов, но я хочу знать: как я могу принимать значения этих строки, чьи указатели получают значения при нажатии кнопки и используют их в других будущих методах?

Код для ActionListener приведен ниже.

getMessageAndTime.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String mm = month.getSelectedItem().toString();
                    String dd = day.getSelectedItem().toString();
                    String yy = year.getSelectedItem().toString();
                    String hr = hour.getSelectedItem().toString();
                    String min = minute.getSelectedItem().toString();
                    String mornOrNight = am_pm.getSelectedItem().toString();

                    String dateAndTime = mm +"-" + dd +"-" + yy + " " + hr +":" + min + " " + mornOrNight;
                    dateFormatter = new SimpleDateFormat("MM-dd-yyyy hh:mm aa");

                    try {
                        date = dateFormatter.parse(dateAndTime);
                    } catch (ParseException ex) {
                        ex.printStackTrace();
                    }

                    timer = new Timer();
                    String contents = message.getText();
                    if (contents.equals("")) {
                        JOptionPane.showMessageDialog(d2, "Announcement field is blank. Please try again.",
                                "ERROR", JOptionPane.ERROR_MESSAGE);
                    }
                }
            });

1 Ответ

1 голос
/ 26 марта 2020

Просто объявите свои переменные вне области действия этого метода.

private String mm = "";
private String dd = "";

 public void methodX()
 {
     getMessageAndTime.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    mm = month.getSelectedItem().toString();
                    dd = day.getSelectedItem().toString();
                    ....
                    ....
                    ....
                }
            });
 }

public void methodY(){
//Now you can access 'mm' and 'dd' here
System.out.println(mm);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...