Java 在用户输入值时添加字符
如何创建一个方法,当用户填写一定数量的字符时自动添加字符 假设我必须输入一个12个字符长的代码。 每次我通过第四个字符时,必须添加一个破折号。4-5,8-9,共2个破折号 我对Java有点陌生,所以我不知道从哪里开始 提前感谢。使用JFormattedTextField,您可以为其定义输入掩码Java 在用户输入值时添加字符,java,swing,jtextfield,Java,Swing,Jtextfield,如何创建一个方法,当用户填写一定数量的字符时自动添加字符 假设我必须输入一个12个字符长的代码。 每次我通过第四个字符时,必须添加一个破折号。4-5,8-9,共2个破折号 我对Java有点陌生,所以我不知道从哪里开始 提前感谢。使用JFormattedTextField,您可以为其定义输入掩码 JFormattedTextField textField = new JFormattedTextField(); textField.setFormatterFactory(new DefaultF
JFormattedTextField textField = new JFormattedTextField();
textField.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("HHHH-HHHH-HHHH")));
编辑并添加一个工作示例
public class SimpleInputMask {
private static void createAndShowGUI() {
JFrame frame = new JFrame("MaskFormatteExample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("input: ");
panel.add(label);
// define the text field with an input mask
JFormattedTextField textField = new JFormattedTextField();
textField.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));
try {
String inputMask = "HHHH-HHHH-HHHH";
textField.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter(inputMask)));
} catch (ParseException ex) {
// will be raised if the inputMask cannot be parsed
// add your own exception handling here
}
panel.add(textField);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
使用JFormattedTextField,可以为其定义输入掩码
JFormattedTextField textField = new JFormattedTextField();
textField.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("HHHH-HHHH-HHHH")));
编辑并添加一个工作示例
public class SimpleInputMask {
private static void createAndShowGUI() {
JFrame frame = new JFrame("MaskFormatteExample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("input: ");
panel.add(label);
// define the text field with an input mask
JFormattedTextField textField = new JFormattedTextField();
textField.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));
try {
String inputMask = "HHHH-HHHH-HHHH";
textField.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter(inputMask)));
} catch (ParseException ex) {
// will be raised if the inputMask cannot be parsed
// add your own exception handling here
}
panel.add(textField);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
为OnChange/keypress创建一个事件,在keypress代码中类似于Textbox.length%4==0{Textbox.Text+='-';}非常简单的keypress事件看起来就像是在这里为OnChange/keypress创建一个事件,在keypress代码中类似于Textbox.length%4==0{Textbox.Text+='-';}非常简单的按键事件看起来很好。我甚至不知道有这样的事情存在。但OP需要12个字符,所以可能-或者AAAA-AAAA-AAAA@tobias_k我将掩码修改为12位。我在jpanel上使用swing组件,我是将此代码放在txtfield开头还是在类的开头加上try catch?@Mr.Goose您应该放它位于您当前定义的位置JTextField.@Mr.Goose我添加了一个小示例来演示如何使用它。很好。我甚至不知道有这样的东西存在。但是OP需要12个字符,所以可能-或者AAAA-AAAA-AAAA@tobias_k我将掩码修改为12位。我在jpanel上使用swing组件,我是将此代码放在txtfield开头还是放在使用try catch?@Mr.Goose初始化您应该将它放在当前定义的位置JTextField.@Mr.Goose我添加了一个小示例来演示如何使用它。