如何从actionListener中获取字符串?

时间:2012-04-07 09:25:17

标签: java

我无法获取我在动作侦听器中指定的字符串的值。

我正在尝试从此动作侦听器访问UserMessage:

public class UpdateButtonListener implements ActionListener
{

    public void actionPerformed(ActionEvent e)
    {    
        String UserMessage;
        UserMessage = MessageTextArea.getText();
        System.out.println("This is your message: " + UserMessage);
    }
}

然后从此actionListener访问它:

private class EncodeButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {   
        //print Message
        System.out.println("Your Message: " + UserMessage);
    }
}

它们位于同一个包中的不同类中。 如果需要,我可以添加完整的代码。

由于

额外信息: 我想要发生的是当我点击编码或解码按钮时。 动作侦听器运行这些按钮以访问更新按钮上的动作侦听器。 我有更新按钮的原因是获取用户输入的文本。

2 个答案:

答案 0 :(得分:0)

我认为这是范围的问题。 UserMessage的范围在actionPerformed中。

尝试在actionPerformed之外声明“String UserMessage”,然后您可以将其公开,在这种情况下,为了访问它,您应该编写“UpdateButtonListener.UserMessage”,或者创建一个返回UserMessage值的函数。

答案 1 :(得分:0)

我推荐这个:只需使用ActionListener来调用方法!

public ActionPanel() {
    // Actions
    private final Action aEncode = new AbstractAction("Encode") {
        public void actionPerformed(ActionEvent event) {
           encodeMessage();
        }
    }
    private final Action aUpdate = new AbstractAction("Update") {
        public void actionPerformed(ActionEvent event) {
           setMessage(messageTextArea.getText());
        }
    }

    // Buttons
    private final JButton encodeButton= new JButton(aEncode);
    private final JButton updateButton= new JButton(aUpdate);
    private final JTextArea messageTextArea= new JTextArea();

    private String message;

    public ActionPanel() {
        //Create two rows and one column
        setLayout(new GridLayout(2,1));

        //Add border to panel
        setBorder(BorderFactory.createTitledBorder("Excute"));

        //Add button to panel
        add(encodeButton);
        add(updateButton);
        //add(messageTextArea);
    }

    private void encodeMessage() { 
        System.out.println("Your Message: " + message.getMessage());
    }

    private void setMessage(String message) {
       this.message = message;
       System.out.println("This is your message: " + message);
    }

    public String getMessage() {
       retuen this.message;
    }
}