如果我们查看DefaultFormatter
的Java API,我们发现您可以将其设置为两种模式:
public void setOverwriteMode(boolean overwriteMode)
“配置插入字符时的行为。如果overwriteMode为true
(默认值),则新字符会覆盖模型中的现有字符。
参数:
overwriteMode
- 表示是否使用了覆盖或重写模式“
这个含义尚不清楚。覆盖和重写模式之间的实际区别是什么?任何熟悉JFormattedTextField
或AbstractFormatter
的人都可以澄清一下吗?谢谢!
答案 0 :(得分: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();
}
});
}
}