我无法获取我在动作侦听器中指定的字符串的值。
我正在尝试从此动作侦听器访问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);
}
}
它们位于同一个包中的不同类中。 如果需要,我可以添加完整的代码。
由于
额外信息: 我想要发生的是当我点击编码或解码按钮时。 动作侦听器运行这些按钮以访问更新按钮上的动作侦听器。 我有更新按钮的原因是获取用户输入的文本。
答案 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;
}
}