0
private JTextField resultTextField = new JTextField("0");
resultTextField.setFont(textFieldFont);
        resultTextField.setBounds(COMMON_X, COMMON_Y, 180, 50);
        resultTextField.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        add(resultTextField);

如上所述,我创建了一个 JTextField。我的应用程序由数字按钮和“。”组成。当我单击数字按钮时,它们会正确附加(即单击 5 次时为“5”,单击2 次时为“52”)。但是点击“。” 按钮预期的结果是“5”。但它显示为“.5”,然后单击“2”,显示“5.2 ”。我哪里会出错?

4

2 回答 2

1

我猜测(根据您的标签)您正在编写某种计算器,并且您想要实现右对齐的文本,而不是从右到左文本。从右到左的方向用于例如阿拉伯语,从右到左书写(你猜对了),而不是从左到右书写的“西方”方式。

我建议您删除applyComponentOrientation()并查看setHorizo​​ntalAlignment

PS:话虽这么说,我真的不知道为什么'5'+'。是 '.5',但 '5'+'.'+'2' 显示为 '5.2'。

于 2013-07-30T13:41:00.860 回答
1

我产生了兴趣,并制作了以下 SSCCE:

import java.awt.ComponentOrientation;

import javax.swing.JFrame;
import javax.swing.JTextField;


public class BasicFrame extends JFrame
{
    public static void main(String[] args)
    {
        BasicFrame frame = new BasicFrame();
        frame.go();
    }

    private void go()
    {
        JTextField resultTextField = new JTextField("0");
        resultTextField.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        add(resultTextField);
        pack();
        setVisible(true);
    }

}

所以现在我有同样的问题:如果我清除字段并输入“123”,它会显示为“123”;当我单击句点键(其中任何一个)时,该字段将显示“.123”;如果我然后输入“abc”,该字段显示“123.abc”;当我输入“a”时,句点会跳到显示字符串的右侧。这不符合我的前任老板所说的“最小惊讶原则”......

于 2013-07-30T13:48:02.503 回答