setText не работает должным образом, если строка начинается с отрицательного знака - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я делаю калькулятор.Я пытался отобразить уравнение в JTextField, но уравнение не печатается правильно, если оно начинается с отрицательного знака.

textfield.setText("-3+3");

дает вывод = 3 + 3-

, ното же самое уравнение, когда в

System.out.println("-3+3");

выводится в правильном порядке

извините, если это какая-то ошибка нуба.

РЕДАКТИРОВАТЬ:

package practice;

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

public class fun extends JFrame implements ActionListener , FocusListener{


public static void main(String[] args){

    new fun();
}

JTextField display2 = new JTextField(20);

JTextField display = new JTextField(20);

JButton btnSol = new JButton("=");

public fun(){

    JFrame fr = new JFrame();

    fr.setSize(450,450);

    fr.setLocationRelativeTo(null);

    fr.setResizable(false);

    fr.setTitle("Calculator");

    JPanel pnl = new JPanel();


    display.setEditable(false);
    display2.setEditable(false)

    pnl.add(display);

    pnl.add(display2);

    pnl.add(btnSol);

    btnSol.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String x = display2.getText();
            System.out.println(x);
            display.setText(x);
            int sum = 0;
            String[] arrOfStr = x.split("\\+");                   
            for (String a : arrOfStr) {
                System.out.println(a);

            sum += Integer.parseInt(a);
            display2.setText(Integer.toString(sum));
            }

        }
    });

    fr.add(pnl);
    fr.setVisible(true);


}

1 Ответ

0 голосов
/ 19 февраля 2019

Это происходит потому, что вы установили

textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

Довольно просто.Это обычно используется для арабского текста (?), Который, я полагаю, инвертирован.

...