У меня проблема с JFormattedTextField, а именно сохранение его в режиме без перезаписи. Я узнал, как установить его без перезаписи, а именно с помощью setOverwriteMode (false).
Однако, хотя эта функция позволяет мне вводить текст в поле без перезаписи, когда фокус теряется и я повторно ввожу поле, overWriteMode снова включается!
Есть ли способ оставить overWriteMode ложным? Я бы предпочел решение, которое не устанавливает его в false каждый раз, когда я теряю фокус, но если это единственно возможное решение, пусть будет так.
Это то, что у меня есть сейчас:
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!
Я надеюсь, что кто-то может мне помочь!
Решение, предложенное Робином:
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);
Спасибо за помощь! С Уважением
DefaultFormatter#setOverwriteMode(false);
, что вам действительно нужно - person mKorbel   schedule 17.09.2012JFormattedTextField
вместо того, чтобы устанавливать его вручную. Это также задокументировано в javadoc методаinstall
. - person Robin   schedule 17.09.2012setOverWriteMode(..)
вообще не подходит, но я пока этого не знаю. - person Tim Kuipers   schedule 17.09.2012Plain Vanilla String
использовалDocumentFilter
сPattern
, если изменения остаются внутри JTextComponents, в противном случае смотреть наDocumnetListener
,JFormattedTextField
— зло и сводить меня с ума несколько месяцев - person mKorbel   schedule 17.09.2012