Java 从ActionListener访问变量并将其传输到新方法

Java 从ActionListener访问变量并将其传输到新方法,java,string,swing,methods,actionlistener,Java,String,Swing,Methods,Actionlistener,我做Java已经有一段时间了,但即使有时方法和变量的格式也会让我感到困惑,这取决于具体情况。我觉得这可能是一个简单的解决办法,但出于某种原因,我被困在它。我有一个ActionListener连接到JDialog中的按钮。当激活此ActionListener方法时,它将创建一个字符串dateAndTime,以及与Timer包中的TimerTask类相关的几个组件(我正在考虑删除这些组件,以代替ScheduledExecutorService,但不要介意)。我知道我可以在任何方法之外的类中声明一个全

我做Java已经有一段时间了,但即使有时方法和变量的格式也会让我感到困惑,这取决于具体情况。我觉得这可能是一个简单的解决办法,但出于某种原因,我被困在它。我有一个
ActionListener
连接到
JDialog
中的按钮。当激活此
ActionListener
方法时,它将创建一个字符串
dateAndTime
,以及与
Timer
包中的
TimerTask
类相关的几个组件(我正在考虑删除这些组件,以代替
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);
                    }
                }
            });

只需在该方法的范围之外声明变量

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);
}