JavaFX TextArea 字符串读取问题
JavaFX TextArea string reading issue
我正在尝试在 JavaFX 中创建一个登录系统,我需要检查以便与电子邮件对应的文本区域的字符串与我的用户 class 中的电子邮件变量相同。但是,我用于将 textArea 中的字符串与用户详细信息进行比较的方法将始终 return false。我不确定为什么。我试过 .equals()、.compareTo、甚至 .charAt() 并用 1 个字母对其进行了测试,它仍然 return false。
这是我的方法代码。请注意,这是我用于将 textArea 中的字符串与 User.getEmail.
中的字符串进行比较的方法
public boolean checkCredentials()
{
return text1.getText().equals(user.getEmail());
}
这是我的用户 class:
中方法 .getEmail() 的代码
private String email = "1";
public String getEmail()
{
return email;
}
此外,即使 运行 在 textArea 中输入为“1”,而我的用户 class 中的字符串 Email 为“1”,我仍然得到 return错误:
public boolean checkCredentials()
{
return text1.getText().length() == user.getEmail().length();
}
我的猜测是 textArea 中的字符串在某处比 User class 中的字符串有一些 "extra"。我尝试打印出两个字符串的长度,但我得到了相同的答案。
重新创建所需的最少代码,注意必须安装 JavaFX,并且必须使用 JavaFX 应用程序模板:
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application
{
Stage window;
Scene scene1;
String sEmail;
// TextBoxes Dec.
TextArea text1 = new TextArea();
public static void main(String[] args)
{
launch(args);
}
public boolean checkCredentials()
{
return text1.getText().equals(sEmail);
}
@Override
public void start(Stage primaryStage)
{
window = primaryStage;
sEmail = "1";
// TextBoxes Ini.
text1.setMaxWidth(200);
text1.setMaxHeight(25);
text1.setMinHeight(25);
// Button
Button button1 = new Button("Check string");
if(checkCredentials())
{
button1.setOnAction(e -> System.out.println("The email is correct"));
}
else
{
button1.setOnAction(e -> System.out.println("The email is NOT correct"));
}
// Layout1
VBox layout1 = new VBox(20);
layout1.setAlignment(Pos.CENTER);
layout1.getChildren().add(text1, button1);
scene1 = new Scene(layout1, 750, 500);
window.setScene(scene1);
window.setTitle("Hello");
window.show();
}
}
上面发布的当前方法将始终return false,除非与之比较的字符串为空。这是因为检查发生在程序为 运行 时,这意味着程序开始时的 textArea 中将始终没有任何内容。
要解决此问题,请为按钮创建一个 EventHandler,如下所示:
button1.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
if(text1.getText().equals(user.getEmail()))
{
window.setScene(scene2);
}
else
{
AlertBox.display("ALERT!", "Please provide correct details");
}
}
});
此方法在按下按钮时比较字符串,当它们相同时转到场景 2。
P.S AlertBox 是我用 display() 制作的 class。
我正在尝试在 JavaFX 中创建一个登录系统,我需要检查以便与电子邮件对应的文本区域的字符串与我的用户 class 中的电子邮件变量相同。但是,我用于将 textArea 中的字符串与用户详细信息进行比较的方法将始终 return false。我不确定为什么。我试过 .equals()、.compareTo、甚至 .charAt() 并用 1 个字母对其进行了测试,它仍然 return false。
这是我的方法代码。请注意,这是我用于将 textArea 中的字符串与 User.getEmail.
中的字符串进行比较的方法public boolean checkCredentials()
{
return text1.getText().equals(user.getEmail());
}
这是我的用户 class:
中方法 .getEmail() 的代码private String email = "1";
public String getEmail()
{
return email;
}
此外,即使 运行 在 textArea 中输入为“1”,而我的用户 class 中的字符串 Email 为“1”,我仍然得到 return错误:
public boolean checkCredentials()
{
return text1.getText().length() == user.getEmail().length();
}
我的猜测是 textArea 中的字符串在某处比 User class 中的字符串有一些 "extra"。我尝试打印出两个字符串的长度,但我得到了相同的答案。
重新创建所需的最少代码,注意必须安装 JavaFX,并且必须使用 JavaFX 应用程序模板:
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application
{
Stage window;
Scene scene1;
String sEmail;
// TextBoxes Dec.
TextArea text1 = new TextArea();
public static void main(String[] args)
{
launch(args);
}
public boolean checkCredentials()
{
return text1.getText().equals(sEmail);
}
@Override
public void start(Stage primaryStage)
{
window = primaryStage;
sEmail = "1";
// TextBoxes Ini.
text1.setMaxWidth(200);
text1.setMaxHeight(25);
text1.setMinHeight(25);
// Button
Button button1 = new Button("Check string");
if(checkCredentials())
{
button1.setOnAction(e -> System.out.println("The email is correct"));
}
else
{
button1.setOnAction(e -> System.out.println("The email is NOT correct"));
}
// Layout1
VBox layout1 = new VBox(20);
layout1.setAlignment(Pos.CENTER);
layout1.getChildren().add(text1, button1);
scene1 = new Scene(layout1, 750, 500);
window.setScene(scene1);
window.setTitle("Hello");
window.show();
}
}
上面发布的当前方法将始终return false,除非与之比较的字符串为空。这是因为检查发生在程序为 运行 时,这意味着程序开始时的 textArea 中将始终没有任何内容。
要解决此问题,请为按钮创建一个 EventHandler,如下所示:
button1.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
if(text1.getText().equals(user.getEmail()))
{
window.setScene(scene2);
}
else
{
AlertBox.display("ALERT!", "Please provide correct details");
}
}
});
此方法在按下按钮时比较字符串,当它们相同时转到场景 2。
P.S AlertBox 是我用 display() 制作的 class。