0

如果我们查看 Java API for DefaultFormatter,我们发现您可以将其设置为两种模式:

public void setOverwriteMode(boolean overwriteMode)

"配置插入字符时的行为。如果 overwriteMode 是true(默认),新字符会覆盖模型中的现有字符。

参数: overwriteMode- 指示是否使用覆盖或覆盖模式"

其含义尚不清楚。覆盖和覆盖模式之间的实际区别是什么?有熟悉的朋友能解释JFormattedTextField一下AbstractFormatter吗?谢谢!

4

1 回答 1

1

当 时true,它会在您键入时覆盖文本。试试看!

图片

import java.awt.EventQueue;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.text.DefaultFormatter;

/** @see http://stackoverflow.com/a/18678843/230513. */
public class Test {

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JFormattedTextField tf = new JFormattedTextField("Xxxx yyy zzzz.");
        DefaultFormatter df = (DefaultFormatter) tf.getFormatter();
        df.setOverwriteMode(true);
        f.add(tf);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Test().display();
            }
        });
    }
}
于 2013-09-07T23:17:17.553 回答