0

当我将数字输入到JFormattedTextField. 例如,当用户输入 124451000 时,它必须在屏幕上动态显示为 124.451.000,而不是当用户按 Tab 或 Enter 键时。

当输入第四个数字时,我想在第三个数字之后添加一个点(例如,2.566)。


public class MyDocListener implements DocumentListener{
     NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMAN); 
     NumberFormatter nff = new NumberFormatter(nf);
     DefaultFormatterFactory factory = new DefaultFormatterFactory(nff);
     final String newline = "\n";

    public void insertUpdate(DocumentEvent e) {
        updateLog(e, "inserted into");
        NumberFormat numberFormatter = new DecimalFormat("#,###,###"); 
        // I put this code to change the format.
    }
    public void removeUpdate(DocumentEvent e) {
        updateLog(e, "removed from");
    }
    public void changedUpdate(DocumentEvent e) {
        //Plain text components don't fire these events.
    }

    public void updateLog(DocumentEvent e, String action) {
    Document doc = (Document)e.getDocument();
    int changeLength = e.getLength();
    displayArea.append(
        changeLength + " character" +
        ((changeLength == 1) ? " " : "s ") +
        action + doc.getProperty("name") + "." + newline +
        "  Text length = " + doc.getLength() + newline);
}


 }

好吧,我尝试了这段代码,但我无法运行,我的 JFormattedTextField 在另一个类中,我无法在另一个类中成功。我无法访问另一个类中的对象。

4

1 回答 1

0

在这种情况下添加 DocumentListener 会有所帮助吗?

http://docs.oracle.com/javase/7/docs/api/javax/swing/event/DocumentListener.html

使用对 JFormattedTextField 的引用创建侦听器,并在侦听器中进行格式化。

于 2013-09-26T19:13:14.400 回答