Java: 我想在单击按钮时获取 TextField 值。怎么做?

Java: I want to get TextField value when I clicked a button. How to do it?

public Monster createCharacterScene() {
    String name;
    TextField nameTextField = new TextField();
    nameTextField.setLocation(65, 50);
    nameTextField.setSize(60, 10);
    Button myButton = new Button("OK");
    myButton.setLocation(25, 50);
    myButton.setSize(30, 40);
    add(myButton);
    add(nameTextField);
    myButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            name = nameTextField.getText();
        }
    });
    return null;
}

我不能这样做。他们说 "local variables referenced from an inner class must be final or effectively final"。有其他方法吗?

非常感谢。

PS。我用的是小程序。

制作name伪决赛:

  final String[] name = new String[1];

并以这种方式访问​​它:

 name[0] = nameTextField.getText();

您不能在 createCharacterScene() 方法中直接读取此值。因为现在还不得而知。你唯一能做的就是定义一个事件处理程序,它会在按键时被触发。

Consumer<String> nameConsumer = text -> { /*You will handle event here*/};
myButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            nameConsumer.apply(nameTextField.getText());
        }
    });

更便宜的版本是对 final 修饰符使用一个小的解决方法:

final String[] nameHolder = new String[1];
myButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            nameHolder[0] = nameTextField.getText();
        }
    });

这里的nameHolder一开始会保持null,但是当有人触发事件的时候,它的值会被设置,所以你需要检查是否设置了值。