如何限制在JTextField中输入的字符数?
假设我想输入最多5个字符.之后,不能输入任何字符.
默认情况下,JavaFX TextField内置ContextMenu了"撤消","复制","剪切"等选项.该ComboBox也具有同样的ContextMenu,当它被设置为可编辑(的ComboBox其实是这是一个编辑器的一部分TextField).
我想ContextMenu用自定义替换它,但我遇到了禁用默认问题的问题.
我试图消耗ContextMenu和鼠标点击事件,但ComboBox并ComboBox.getEditor()都有空ContextMenu.
我错过了什么吗?
我要求限制用户可以输入到TextFieldJavaFX控件中的字符数.我已经延长TextField,像这样
public class LengthLimitedTextField extends TextField {
/**
* @param maxCharacters The max allowed characters that can be entered into this {@link TextField}.
*/
public LengthLimitedTextField(final int maxCharacters) {
final TextField thisField = this;
this.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
// Force correct length by deleting the last entered character if text is longer than maxCharacters
if (newValue.length() > maxCharacters) {
thisField.deleteNextChar();
}
}
});
}
} …Run Code Online (Sandbox Code Playgroud) 如何在我的主类javafx中使用此代码.这样我就可以在javafx texfield中设置字符的最大长度.
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));
}
}
};
Run Code Online (Sandbox Code Playgroud)
我的java fx主类如下所示
public class TextFiled extends Application {
@Override
public void start(Stage primaryStage) {
final TextField t_fname = new TextField();
StackPane root = …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 JavaFX 制作一款数独游戏,但我不知道如何只允许输入一个字母。答案是调用文本字段并执行以下操作:
myTextField.setOnKeyPressed(e ->
{
if (!myTextField.getText().length().isEmpty())
{
// Somehow reject the key press?
}
}
Run Code Online (Sandbox Code Playgroud)
上面的方法不适用于复制粘贴...或大量其他东西等等。使用像这样的按键侦听器似乎是一个糟糕的主意。一定有更好的东西吗?文本字段是否有一个属性只允许输入某些字符,或者只允许输入一定数量的字符?
谢谢你!