为什么很清楚在这里不工作



我在Java中清除TextArea的问题。

Button gen = new Button("generate");
gen.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            textArea.clear();
            combination.init();
            setPassword();
            textArea.setText(password);
        }
    });

单击Button时,事件处理程序将字符串"密码"放入TextArea中。它通过这样做获得字符串:

combination.init();
setPassword();

然后将字符串放入TextArea

textArea.setText(password);

如果再次单击Button,将生成一个新字符串并将其放入TextArea中。但是,新字符串没有事先清除,而是在最后一个之后被放置。

我尝试这样解决它,但似乎是错误的,也不起作用:

int i = textArea.getParagraphs().size();
if(i != 0) {
    textArea.clear();
}

那我做错了什么?为什么不清除TextArea

正如@dvarga所说,使用setText()时不需要clear()方法,因为最后一个在添加新值之前清除了先前的文本。

如果再次单击该按钮,将生成一个新字符串并放置 进入textarea。

问题来自setPassword(),我想当您生成一个新值时,您没有将其放入密码中,并且您认为clear()中的问题,因为如果您的方法setPassword(),则在TextArea中添加了密码,而不是结果。

此示例更多地说明您的问题:

    gen.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            // combination.init();
            String generated = setPassword();
            area.setText(generated);
        }
    });

这就是方法生成一个字符串:

private String setPassword() {
        byte[] array = new byte[7]; // length is bounded by 7
        new Random().nextBytes(array);
        String generatedString = new String(array, Charset.forName("UTF-8"));
        return generatedString;
    }

或通过更改setPassowrd()中密码的值:

gen.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                // combination.init();
                setPassword();
                area.setText(password);
            }
        });
    }
    private void setPassword() {
        byte[] array = new byte[7]; // length is bounded by 7
        new Random().nextBytes(array);
        String generatedString = new String(array, Charset.forName("UTF-8"));
        password = generatedString;
    }

作为 textArea.setText(password);也将"清除"文本,问题不是clear方法(但是它没有用)。

问题必须来自(一种)这些方法

combination.init();
setPassword();

您最有可能将新文本附加到上一个文本而不是覆盖它的地方(password成员变量已经包含错误的文本)。

如果您发布了上述方法,则可以在此处找到根问题,或者基于此问题,您可以自己找到错误。

相关内容

  • 没有找到相关文章

最新更新