java文件写入非覆盖,java – 如何将JFormattedTextField保持在非覆盖模式?

我有JFormattedTextField的问题,即保持非覆盖模式.我发现了如何将其设置为非覆盖,即使用setOverwriteMode(false).

但是,虽然此功能允许我键入字段而不覆盖,但当焦点丢失并且我重新进入字段时,overWriteMode再次打开!

有没有办法让overWriteMode保持错误?我希望每次失去焦点时都不会将其设置为假的解决方案,但如果这是唯一可行的解​​决方案,那就这样吧.

这就是我现在所拥有的:

DefaultFormatter format = new DefaultFormatter();

format.setOverwriteMode(false);

inputField = new JFormattedTextField();

inputField.setValue("don't overwrite this!");

inputField.setColumns(20);

format.install(inputField);// This does the trick only the first time I enter the field!

我希望有一个人可以帮助我!

解决方案,由Robin提出:

DefaultFormatter format = new DefaultFormatter();

format.setOverwriteMode(false);

inputField = new JFormattedTextField(format); // put the formatter in the constructor

inputField.setValue("don't overtype this!");

inputField.setColumns(20);

谢谢您的帮助!

问候

最佳答案 射到黑暗中,有什么我错过了

import java.awt.GridLayout;

import java.math.RoundingMode;

import java.text.NumberFormat;

import javax.swing.JFormattedTextField;

import javax.swing.JFrame;

import javax.swing.text.NumberFormatter;

public class MaskFormatterTest {

public static void main(String[] args) throws Exception {

NumberFormat format = NumberFormat.getNumberInstance();

format.setMaximumFractionDigits(2);

format.setMinimumFractionDigits(2);

format.setParseIntegerOnly(true);

format.setRoundingMode(RoundingMode.HALF_UP);

NumberFormatter formatter = new NumberFormatter(format);

formatter.setMaximum(1000);

formatter.setMinimum(0.0);

formatter.setAllowsInvalid(false);

//formatter.setOverwriteMode(false);

JFormattedTextField tf = new JFormattedTextField(formatter);

tf.setColumns(10);

tf.setValue(123456789.99);

JFormattedTextField tf1 = new JFormattedTextField(formatter);

tf1.setValue(1234567890.99);

JFormattedTextField tf2 = new JFormattedTextField(formatter);

tf2.setValue(1111.1111);

JFormattedTextField tf3 = new JFormattedTextField(formatter);

tf3.setValue(-1111.1111);

JFormattedTextField tf4 = new JFormattedTextField(formatter);

tf4.setValue(-56);

JFrame frame = new JFrame("Test");

frame.setLayout(new GridLayout(5, 0));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.add(tf);

frame.add(tf1);

frame.add(tf2);

frame.add(tf3);

frame.add(tf4);

frame.pack();

frame.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值