纬度:43,424523经度:34,958140
我使用了IntegerField
提供的IntegerField我可以解析数字以获得我喜欢的格式,但在框架屏幕中我想要它。用户输入时(不输入点或逗号)
但我将如何成功。
这是我要编辑的框架
In this screen it should be changed
Like the second box, User won't enter the dots但这不是我喜欢的格式。当您阅读代码时,您将理解我的意思。
使用此代码拍摄第三张截图
DecimalFormat format = new DecimalFormat("##,####");
format.setGroupingUsed(true);
NumberFormatter formatter = new NumberFormatter(format);
formatter.setValueClass(Integer.class);
formatter.setMaximum(Integer.MAX_VALUE);
formatter.setAllowsInvalid(false);
IntegerField minField = new IntegerField();
JFormattedTextField maxField = new JFormattedTextField(formatter);
答案 0 :(得分:1)
好的,我找到了解决方案。 MaskFormatter非常好地处理这个问题。仍然,任何其他想法将不胜感激
MaskFormatter latitudeformat=new MaskFormatter("##.######");
MaskFormatter longitudeformat=new MaskFormatter("###.######");
latitudeformat.setPlaceholderCharacter('0');
latitudeformat.setOverwriteMode(true);
longitudeformat.setPlaceholderCharacter('0');
longitudeformat.setOverwriteMode(true);
JFormattedTextField latitudeField = new JFormattedTextField(latitudeformat);
JFormattedTextField longituteField = new JFormattedTextField(longitudeformat);
答案 1 :(得分:0)
纬度和经度不是整数值我猜;) 只使用两个标记的JTextFields,一个用于经度,另一个用于纬度
整数值基本上是从0到9的数字字符串和减号 制作花车你只需要接受'。'
答案 2 :(得分:0)
GUI将包含2个JLabel和2个JTextField,排列方式与您的示例相同。
Latitude: 43,324523 Longitude: 34,958140
您将使用以下代码在JTextFields中测试双打:
public double convertTextToDouble(String text) {
try {
return Double.valueOf(text);
} catch (NumberFormatException e) {
return Double.MIN_VALUE;
}
}
如果文本是有效的double,则返回double值。如果文本不是有效的双精度型,则返回最小双精度值。
通常,您不会使用异常来测试无效值。在这种情况下,您应该因为异常已经存在。
答案 3 :(得分:0)
public interface APIService {
@POST("CUAN_IMPORT_SRV/ImportHeaders")
@Headers("Content-Type: application/json")
Call<String> savePost(@Header("Authorization") String bearer, @Header("X-CSRF-Token") String token, @Body String jsonContact);
@GET("CUAN_IMPORT_SRV/")
Call<String> getCall(@Header("Authorization") String bearer, @Header("X-CSRF-Token") String token ) ;