如何在java中为JTextField创建坐标格式

时间:2016-08-09 08:45:54

标签: java

  纬度: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);

4 个答案:

答案 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 ) ;