DefaultFormatter的覆盖模式的描述不清楚

时间:2013-09-07 19:21:43

标签: java swing overwrite

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

public void setOverwriteMode(boolean overwriteMode)

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

参数: overwriteMode - 表示是否使用了覆盖或重写模式“

这个含义尚不清楚。覆盖和重写模式之间的实际区别是什么?任何熟悉JFormattedTextFieldAbstractFormatter的人都可以澄清一下吗?谢谢!

1 个答案:

答案 0 :(得分:1)

true时,会在您输入时覆盖文字。试试看吧!

image

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();
            }
        });
    }
}