在我的程序中,我有一个加减按钮,可以增加或减少文本字段的数量。现在我想做的是在所有字段都被填充后打开一个新面板。我遇到的问题是,如果我只填写其中一个文本字段并单击验证按钮,即使其他文本字段为空,它也会转到下一个面板。
stage = primaryStage;
pane = new BorderPane();
pane.setStyle("-fx-background: #CEF6D8;");
centerPane1 = new Pane();
GridPane mainGrid = new GridPane();
mainGrid.setPadding(new Insets(150, 0, 0, 100));
mainGrid.setVgap(50);
// ADULTS, CHILDREN AND INFANT GRID
noPassGrid = new GridPane();
noPassGrid.setHgap(10);
plus = new Button("+");
plus.setMinWidth(50);
plus.setFont(Font.font("Verdana", 20));
GridPane.setConstraints(plus, 1, 0);
plus.setOnAction(e -> {
plus(count);
getArraySize();
});
count = new Label("1");
count.setFont(Font.font("Verdana", 20));
GridPane.setConstraints(count, 2, 0);
minus = new Button("-");
minus.setMinWidth(50);
minus.setFont(Font.font("Verdana", 20));
GridPane.setConstraints(minus, 3, 0);
minus.setOnAction(e -> {
minus(count);
getArraySize();
});
noPassGrid.getChildren().addAll(plus, count, minus);
GridPane.setConstraints(noPassGrid, 0, 2);
mainGrid.getChildren().addAll(noPassGrid);
search = new Button("SEARCH");
search.setPrefSize(300, 100);
search.setFont(new Font("Verdana", 30));
grid = new GridPane();
grid.setPadding(new Insets(150, 0, 0, 450));
grid.setVgap(20);
grid.setHgap(20);
test = new Label();
test.setFont(Font.font("Verdana", 20));
test.setLayoutX(500);
test.setLayoutX(100);
search.setOnAction(e -> {
for(int i=0; i<arrayLength; i++) {
passName[i] = new TextField();
passName[i].setFont(Font.font("Verdana", 20));
passName[i].setPromptText("Enter Name");
GridPane.setConstraints(passName[i], 2, i);
grid.getChildren().addAll(passName[i]);
}
});
verify = new Button("VERIFY");
verify.setPrefSize(300, 100);
verify.setFont(new Font("Verdana", 30));
verify.setOnAction(e -> {
for(int i=0; i<arrayLength; i++) {
if(passName[i].getText().equals("")) {
test.setText("INCORRECT");
}
else {
center2 = new Pane();
pane.setCenter(center2);
}
}
});
centerPane1.getChildren().addAll(mainGrid, grid, test);
pane.setCenter(centerPane1);
bottom1 = new AnchorPane(verify, search);
bottom1.setPadding(new Insets(0, 0, 100, 0));
AnchorPane.setRightAnchor(search, 150.0);
AnchorPane.setLeftAnchor(verify, 150.0);
pane.setBottom(bottom1);
scene = new Scene(pane, 1200, 600);
stage.setScene(scene);
stage.show();
}
public void getArraySize() {
arrayLength = counter;
passName = new TextField[arrayLength];
}
public void plus(Label l) {
if(counter < 8) {
counter++;
l.setText("" + counter);
}
}
public void minus(Label l) {
if(counter > 1) {
counter--;
l.setText("" + counter);
}
}
你能告诉我我的代码有什么问题吗?
谢谢Marco
问题出在验证按钮的逻辑上,如果至少填充了一个文本字段,您的按钮将使窗格出现,另一方面,您希望仅在所有文本字段都填充时才显示窗格,因此您应该这样做:
verify.setOnAction(e -> {
boolean valid = true; // Variable to store whether the inputs are filled
for(int i=0; i<arrayLength; i++) {
if(passName[i].getText().equals("")) {
valid = false;
}
}
if(valid) {
center2 = new Pane();
pane.setCenter(center2);
} else {
test.setText("INCORRECT");
}
});
问题内容: 谁能告诉我如何在内验证? 我需要它来防止用户单击“保存”,除非同时输入了两个字段。 到目前为止,这是我的代码: 这是我用于验证电子邮件字段的功能: 问题答案: 这可以通过扩展:
我正在使用LostFocus事件验证两个文本字段,如下所示: 我的问题是,当我在第一个文本字段上失去焦点并将焦点移到第二个文本字段时,两个字段都会打印错误消息(两个lostfocus事件下的IF块内的消息)当我在第一个文本字段中输入错误并将焦点移到第二个字段时,它应该只打印第一个文本字段的错误消息。但这两种方法都存在打印错误。 第一个文本字段是文本。没有第二个文本字段是文本。手机没有
问题内容: 我正在使用JavaFX 2.2项目,使用TextField控件时遇到问题。我想限制用户将输入到每个TextField的字符,但是我找不到属性或类似maxlength的东西。存在同样的问题,可以通过这种方式解决。如何解决JavaFX 2.2的问题? 问题答案: 这是在通用文本字段上完成工作的更好方法: 除了该“撤消”错误外,它的工作原理非常完美。
我有1个“viewelements”-类,1个控制器和1个fxml-文件。 ViewElements-Class包含FXML的元素,如按钮和文本字段。Controller-Class包含业务逻辑。 我试图更新文本字段“TextFieldDateIausWaeHlen”,我想将文件的路径设置到文本字段中,但我的方法不起作用。 我的错误在哪里?
我在javafx中有一个TextField是在FXML中创建的。它链接到一个名为“thesholdbox”的变量(如下所示,实例化不显示)。我有一个监听KeyEvents的字段,但是每当我在字段中输入值时,“gettext()”总是返回一个空字符串。 Java代码: FXML:
我构建了一个用于显示数据的小JavaFX TableView。用户应该能够在桌面视图中编辑数据。问题是:某些字段只允许特定值。如果用户输入了错误的值,则该字段设置为0。 这是我的班级: 所以当我编辑一个tableviewcell并输入“q”(这个值是不允许的)并按Enter时,调试器在上面的catch块中跳转,将观察列表中的特定值设置为0(我可以在调试器中看到这一点,当我展开这个对象时)但是tab