我有一个用于IP地址的格式化文本字段:

ipmask = new MaskFormatter("###.###.###.###");
ipmask.setPlaceholderCharacter(' ');
field = new JFormattedTextField(ipmask);
field.setValue("111.222.333.444");有效,但
field.setValue(" 10.222.333.444");不起作用
field.setValue("10 .222.333.444");不起作用
field.setValue("10.222.333.444");不起作用

设置值的正确方法是什么?

最佳答案

有点奇怪,但这是另一个问题(位于Java: network settings window)。深入研究之后,可以找到Sun的RegexFormatter实现(请参阅http://java.sun.com/products/jfc/tsc/articles/reftf/;从http://java.sun.com/products/jfc/tsc/articles/reftf/RegexFormatter.java下载源代码),您可以像这样使用:

JFormattedTextField ipAddress;
   try{
    RegexFormatter ipmask = new RegexFormatter("\\d{0,3}\\.\\d{0,3}\\.\\d{0,3}\\.\\d{0,3}");
        ipmask.setOverwriteMode(false);
    ipAddress = new JFormattedTextField(ipmask);
}catch(Exception e1){
}
ipAddress.setValue("255.255.255.255");

您可能已经从这里继续前进了,但以为我会坚持这样做,以防其他人徘徊。

10-05 18:53