2016-06-06 11 views
-1

Ich arbeite derzeit an einer Taschenrechner-App, die den Windows-Rechner als ein Nebenprojekt nachahmt und ich habe in etwas gerannt, das ich nicht herausfinden kann.Interpunktion in Java-String nicht korrekt angezeigt

Ich habe einen JTextField, die hat ComponentOrientation zu RIGHT_TO_LEFT gesetzt, wie so:

bottomText.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

und die Art und Weise habe ich Text schon länger ist wie folgt:

bottomText.setText(bottomText.getText() + key.getNumber()); 

für Tasten mit Zahlen (0 bis 9). Das Problem ist, wenn ich versuche, eine deicmal hinzufügen, etwa so:

bottomText.setText(bottomText.getText() + "."); 

zeigt sich, wie“0,123" bis ich eine andere Taste drücken, dann schaltet er auf‚123,4‘. Was seltsam ist, wenn ich tun:

bottomText.setText(bottomText.getText() + "f"); 

das Dezimalsystem mit einem „f“ zu ersetzen, zeigt es, wie es sollte in der Regel, das heißt „123f“, dann „123f4“. Meine dezimale Darstellung der Zahl ist in Ordnung (gespeichert in einer doppelten Variablen), aber es zeigt sich merkwürdig im JTextField. Weiß jemand, was hier passiert?

+0

Siehe auch dieses [Taschenrechnerbeispiel] (http://stackoverflow.com/a/7441804/418556). Es verwendet 'ScriptEngine', um den Ausdruck im Textfeld auszuwerten. –

Antwort

0

Es sieht aus wie ich

bottomText.setHorizontalAlignment(SwingConstants.TRAILING); 

statt

bottomText.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

Danke Andrew Thompson für Ihr Beispiel verwendet haben sollte.

Verwandte Themen