我在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
?
答案 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()