5

JavaFX で最大文字数を設定できるように、JavaFX のメイン クラスでこのコードを使用するにはどうすればよいTextFieldですか?

class LimitedTextField extends TextField {

    private final int limit;

    public LimitedTextField(int limit) {
        this.limit = limit;
    }

    @Override
    public void replaceText(int start, int end, String text) {
        super.replaceText(start, end, text);
        verify();
    }

    @Override
    public void replaceSelection(String text) {
        super.replaceSelection(text);
        verify();
    }

    private void verify() {
        if (getText().length() > limit) {
            setText(getText().substring(0, limit));
        }

    }
};

私の JavaFX メインクラスを以下に示します。

public class TextFiled extends Application {
    @Override
    public void start(Stage primaryStage) {
        final TextField t_fname = new TextField();
        
        StackPane root = new StackPane();
        root.getChildren().add(t_fname);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
4

5 に答える 5

5

LimitedTextFieldの代わりにyour を使用する必要がありますTextField

次の行を置き換えます。

final TextField t_fname = new TextField();

これで:

final LimitedTextField t_fname = new LimitedTextField(maxLength);
于 2013-05-14T09:00:09.850 に答える