2016-08-09 12 views
1

Breite machen: 43,324523 Längengrad: 34,958140Wie man ein Koordinatenformat für JTextField in java

I verwenden Integer hier zur Verfügung gestellten IntegerField

ich die Nummer analysieren kann das Format zu bekommen was ich mag, aber ich will es im Rahmen Bildschirm. Wenn Benutzer tippen (ohne Punkt oder Komma einzugeben)

Aber wie ich es schaffen kann.

das ist der Rahmen Ich mag würde

In this screen it should be changed

Like the second box, User won't enter the dots aber das ist nicht das Format Ich mag bearbeiten. Wenn Sie den Code lesen, werden Sie verstehen, was ich meine.

dritte Screenshot wurde mit diesem Code geschossen

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

Antwort

1

Ok, ich habe eine Lösung gefunden. MaskFormatter behandelt dieses Problem sehr gut. Dennoch würden alle anderen Ideen geschätzt werden

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); 
+0

Die Länge geht von -180 Grad bis +180 Grad. Sie haben nur 2 Ziffern zugewiesen. –

+0

@GilbertLeBlanc yeah ich weiß nur kopieren eingefügt. Aber es ist nur die Art und Weise, die ich gefunden habe. auch mit dieser Methode kann ich keine negativen Zahlen schreiben .. Bearbeitete die Antwort. Btw Sir wissen Sie, wie Sie diese Antwort verbessern können, um Längen- und Breitengrad im Bereich von -90 bis +90 und -180 bis +180 – trd3v3lop

+0

wirklich einfügen zu können. MaskFormatter ist nicht für allgemeine Doppeleingabe gedacht. Es gibt kein Maskenzeichen für + und - das ist mir bewusst. –

0

Breiten und Längen sind nicht ganzzahlige Werte i erraten;) Verwendung nur zwei labled JTextFields eine für Längen- und die andere für Breiten

ganzen Zahlen Werte im Grunde Strings von Zahlen von 0 bis 9 und der Minus , um Floats zu machen, müssen Sie nur das 'akzeptieren.'

+0

aber ich möchte, dass Benutzer nur die Nummer eingeben konnte. also habe ich jformattetedtextfield benutzt. – trd3v3lop

+0

das ist genau das, was ein Textfeld für =] ist, ein formatiertes Textfeld wird verwendet, wenn Sie Daten haben, die ein Format wie ein Datum oder eine Uhrzeit haben, aber einen numerischen Wert lesen JTextField ist geeigneter; Alles, was Sie tun müssen, ist dies txtField1 = new JTextField (10); doppelter Wert = Double.parseDouble (txtField1.getText()); – whyn0t

+0

Siehe [Wie validiere ich ein jtextfield, um nur ganze Zahlen zu akzeptieren] (http://stackoverflow.com/questions/14319064/how-to-validate-a-jtextfield-to-accept-only-integer-numbers) –

0

Die GUI würde 2 JLabels und 2 JTextFields enthalten, die wie in Ihrem Beispiel angeordnet sind.

Latitude: 43,324523 Longitude: 34,958140 

Sie würden mit dem folgenden Code in dem JTextFields für Doppel testen:

public double convertTextToDouble(String text) { 
    try { 
     return Double.valueOf(text); 
    } catch (NumberFormatException e) { 
     return Double.MIN_VALUE; 
    } 
} 

Wenn der Text ein gültiger doppelt so hoch ist, werden Sie den doppelte Wert zurück. Wenn der Text kein gültiges Double ist, geben Sie den minimalen doppelten Wert zurück.

Normalerweise würden Sie keine Ausnahmen zum Testen auf ungültige Werte verwenden. In diesem Fall sollten Sie, weil die Ausnahme bereits existiert.

+0

danke für die Antwort. aber es ist nicht was ich will. Ich bearbeite den Beitrag, um klarer zu sein. Entschuldigung für das wenig qualifizierte Englisch. – trd3v3lop

Verwandte Themen