Nun, ich studiere Java FX, aber dieses Mal benutze ich FXML in NetBeans, dann möchte ich die von einem TextField erlaubten Keys einschränken. Wie nur Zahlen oder nur Buchstaben.Filter Tastatur TextField Java FXML
Ich habe This gefunden, dann habe ich eine neue Klasse erstellt, dann setzen Sie diesen Code (der als richtig in der Verknüpfung überprüft), ich TextField erweitern, aber wenn ich den Code ausführen, löst eine Ausnahme, ich denke, weil SceneBuilder doesn ist Hab meine Klasse nicht.
-Update habe ich einen ähnlichen Code für Java FX:
import java.util.function.UnaryOperator;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.TextFormatter.Change;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
*
* @author Alejandro
*/
public class JavaFXApplication2 extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
TextFormatter<String> textFormatter = getTextFormatter();
textField.setTextFormatter(textFormatter);
VBox root = new VBox();
root.getChildren().add(textField);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("TextFormat");
primaryStage.setScene(scene);
primaryStage.show();
}
private TextFormatter<String> getTextFormatter() {
UnaryOperator<Change> filter = getFilter();
TextFormatter<String> textFormatter = new TextFormatter<>(filter);
return textFormatter;
}
private UnaryOperator<Change> getFilter() {
return change -> {
String text = change.getText();
if (!change.isContentChange()) {
return change;
}
if (text.matches("[a-z]*") || text.isEmpty()) {
return change;
}
return null;
};
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Das obige Code funktioniert gut in einem Java FX app, aber ich brauche eine in Java FXML zu verwenden, ein Kerl unter verfassen ähnlicher Code, Es kompiliert, keine trows Ausnahme, aber funktioniert nicht, oder ich weiß nicht, wie man es implementiert.
Diese Verbindung ist ziemlich alt. Sie sollten einen 'TextFormatter' für diese Art von Funktionalität verwenden. Siehe z. https://stackoverflow.com/questions/40472668/numeric-textfield-for-in-ntegers-in-javafx-8-with-textformatter-and-or-unaryoperat –