为什么明确不在这里工作?

时间:2017-12-16 17:24:05

标签: java javafx event-handling

我在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时,事件处理程序会将字符串“password”放入TextArea。它通过这样做得到字符串:

combination.init();
setPassword();

然后它将字符串放入TextArea

textArea.setText(password);

如果再次点击Button,将生成一个新字符串并将其放入TextArea。但是,不是事先清除它,而是将新字符串放在最后一个之后。

我尝试像这样解决它,但它似乎错了,也不起作用:

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

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

2 个答案:

答案 0 :(得分:0)

由于textArea.setText(password);也会清除&#34;在文本中,问题不在于clear方法(但它没用)。

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

combination.init();
setPassword();

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

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

答案 1 :(得分:0)

正如@DVarga所说,当您使用#include <gtest/gtest.h> #include <arithmetic.h> #include "tests.h" TEST(SuiteName, TestName) { ASSERT_EQ(add(1, 1), 2); // Can't resolve type 'ASSERT_EQ' } 时,您不需要clear()方法,因为最后一个方法在添加新值之前清除了之前的文字。

  

如果再次单击Button,将生成并放置一个新字符串   进入TextArea。

问题来自setText(),我想当你生成一个新值时,你没有把它放在密码中,你认为来自setPassword()的问题,因为你在TextArea中添加了密码而不是结果如果你的方法是setPassword()。

这个例子解释了你的问题:

clear()

这是方法生成每个单击的字符串:

    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()