我需要遵循一些要求,按照格式“ 00:00”制作一个JFormattedTextField:
有没有办法做到这一点?我看过要添加到JFormattedTextField的不同格式化程序,验证器和文档过滤器,但是我不确定该使用哪一个。(现在使用DefaultFormatter,但已经查看了NumberFormatter的限制。我是否需要结合使用格式化程序和验证程序?)
这是我现在的JFormattedTextField:http://pastebin.com/jW2RSJXe[1]。
从执行此操作的代码到外观的示例/指针,将不胜感激!
运行此示例。它使用MaskFormatter
。该:
是永久存在的,但我不知道如何将您的问题的另一部分:如果你只有2个,它会显示02你可以玩它格式化
import java.awt.BorderLayout;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;
public class MaskFormatterTest extends JPanel {
private JFormattedTextField formatText;
public MaskFormatterTest() {
formatText = new JFormattedTextField(createFormatter("##:##"));
formatText.setColumns(20);
formatText.setText("00:00");
setLayout(new BorderLayout());
add(new JLabel("Enter only numbers"), BorderLayout.NORTH);
add(formatText, BorderLayout.CENTER);
}
private MaskFormatter createFormatter(String s) {
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter(s);
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return formatter;
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("MaskFormatter example");
frame.add(new MaskFormatterTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
});
}
}
的MaskFormatter
设置为在每个位置的每个字符,并使其大小的类型的值。在这种情况下,我使用##:##
。允许两位数,一个冒号和另外两位数。
更新:添加formatText.setText("00:00");
到代码中以初始化文本字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句