글쎄, 저는 Java FX를 공부하고 있습니다 만, 이번엔 NetBeans에서 FXML을 사용하고 있습니다. 그런 다음 TextField에서 허용하는 키를 제한하려고합니다. 그냥 숫자 또는 그냥 문자처럼.필터 키보드 TextField Java FXML
This 나는 새로운 클래스를 만든 다음 해당 코드를 링크에 올바른 것으로 두었습니다. TextField를 확장하지만 코드를 실행하면 예외가 발생합니다. 왜냐하면 SceneBuilder는 내 수업은 없어.
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);
}
}
그 코드는 위의 자바 FX 애플리케이션에서 잘 작동하지만 내가 자바 FXML에 사용할 하나가 필요 올리기 유사한 코드보다 한 사람 :
업데이트 난 자바 FX에 대한 유사한 코드를 발견 그것은 컴파일, 아니 예외를 trows,하지만 작동하지 않습니다, 또는 그것을 구현하는 방법을 모르겠습니다.
. 이런 종류의 기능을 위해서'TextFormatter'를 사용해야합니다. 예를 들어 https://stackoverflow.com/questions/40472668/numeric-textfield-for-integers-in-javafx-8-with-textformatter-and-or-unaryoperat –