从ActionListener发送变量,以便另一个ActionListener可以使用它

普基

我看到有关此主题的一些问题已经提出,但我还没有找到答案。我正在编写一个代码,其中用户在中键入一些内容JTextField,然后单击按钮后,将他的单词替换为带有相同数量字符的星号,例如“ table”将替换为“ ****”。我这样做是这样的:

ask.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String guess = "";
        String given = textGive.getText();
        for (int i=0; i<given.length(); i++){
            String asterisk = "*";
            guess += asterisk;
            textGive.setText(guess);
        }

    }
}); 

我知道我做的不好,但是我不知道如何做得更好。有什么建议吗?

现在,我想以某种方式将Strings,原始单词和星号保存在范围之外,这样我就可以在另一个ActionListener中访问它并进一步对其进行修改。在写第一本书之前,ActionListener我确实写过东西String guess = ""String given = ""但是似乎什么也没做。因此,ActionListener我想在第二秒钟向他发送given用户键入他的单词时收到的字符串

guess.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String attempt = textGuess.getText();
        char att = attempt.charAt(0);
        for (int i=0; i<5; i++){

            if (given.charAt(i)==att){
                textGuess.setText("Ok!");
            }
        }


    }
}); 

Eclipse给我错误提示:

“无法引用在封闭范围内定义的给定的非最终局部变量”。

我知道我需要做givenfinal才能进一步访问它,但是如果变量依赖于first输入的文本,该怎么做ActionListener呢?还有其他解决方案吗?我最近开始使用Java,所以我不太了解该语言。

充满鳗鱼的气垫船

您希望对类可见的所有内容都应放置在实例字段中,而不是局部变量中。例如,给定的变量应该是在类中声明的私有非静态字段,而不是埋在侦听器的actionPerformed方法中的变量。

例如,

public class Foo extends JPanel {
    private JButton ask = new JButton("Ask");
    private JTextField textGive = new JTextField(10);
    private String given = "";  // visible throughout the class

    public Foo() {
        add(textGive);
        add(ask);
        ActionListener listener = e -> {
            String guess = "";
            // String given = textGive.getText(); //visible only within this method
            given = textGive.getText();
            guess = given.replaceAll("\\w", "*");
            textGive.setText(guess);
        };

        ask.addActionListener(listener);
        textGive.addActionListener(listener);  // also give the same listener to the JTextField
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何存储返回列表,以便可以在另一个类中使用它?

如何修改字符向量,以便可以使用它来索引另一个对象?(栅格或数据框)

如何从另一个包导入R函数,以便用户可以使用?

Java NetBeans用另一个调用ActionListener

如何将 API 请求中的数据设置为变量,以便我可以在另一个 API 调用中使用它?

如何从另一个类调用方法以在我的ActionListener类中使用

如何使用来自另一个类的 ActionListener 更改 JPanel 颜色?

在另一个类中使用内部类actionListener

我可以使用变量模板来声明另一个变量模板吗?

是否可以使用int变量在SQL中设置另一个变量的大小

如何设置字段的值,以便可以从另一个类调用它?

使用ActionListener从一个JFrame跳到另一个JFrame不起作用

CSharp-将变量名存储在另一个变量中,以便可以在给定对象上动态调用它

我可以使用另一个类内部的函数中的变量吗?

我可以格式化matlab命令的输出,以便可以使用它声明一个新变量吗?

Opencart:是否可以使用从一个vQmod xml到另一个vQmod xml的变量?

是否可以使用带有字符串的变量来标识另一个变量?

保存对象的变量,然后可以使用这些变量初始化另一个对象

为变量赋值并在python中的另一个变量中使用它

将一些复选框从一个ActionListener转移到另一个ActionListener

另一个类中的Java actionListener无法打开窗口

另一个类中的Java ActionListener-从主类访问对象

ActionListener 完成后如何触发另一个动作监听器

Java:方法在另一个类中等待ActionListener

我可以使变量的值取决于对另一个变量的更改吗?

如何从另一个脚本的文件夹中获取多个bash脚本,以便我可以使用两个脚本中的函数?

如何设置和传递在另一个View目标C中也可以使用的变量的值

我可以使用 JavaScript 变量将 document.write 用于另一个 html 标签吗?

是否可以使用带有另一个变量的 select 语句在 SQL Server 中设置一个变量