После большого количества разочарования тем, чтобы заставлять JFormattedTextField работать с моими пользовательскими форматами, я задавался вопросом, был ли a Formatter
или FormatterFactory
это использует регулярные выражения?
Моя идея состоит в том что, если существует один, то я мог перенести его в статический класс и вызвать его как так:
mFormattedTextField.setFormatterFactory(
SomeStaticClass.getRegexFormatFactory("^(\\d{1,}h)(\\s([0-5])?[0-9]m)?$"));
Посмотрите мой предыдущий вопрос для большего количества фона:
"Я хочу использовать JFormattedTextField, чтобы позволить пользователю вводить значения продолжительности времени в форму. Демонстрационные допустимые значения: 2h 30m
72h 15m
6h
0h
"
Если вы хотите добавить шаблон, вы можете добавить что-то подобное в класс массива:
class Array
def each_fl
each_with_index do |x,i|
yield [i==0 ? :first : (i==length-1 ? :last : :inner), x]
end
end
end
, а затем где угодно, вы получите следующий синтаксис:
[1,2,3,4].each_fl do |t,x|
case t
when :first
puts "first: #{x}"
when :last
puts "last: #{x}"
else
puts "otherwise: #{x}"
end
end
для следующих выходных данных:
first: 1
otherwise: 2
otherwise: 3
last: 4
-121--1000511- 'С нуля' является относительным термином. Действительно делать это с нуля, без использования какого-либо ранее существовавшего кода зрения, было бы очень больно, и вы бы не сделали это лучше, чем все сообщество компьютерного зрения.
Однако, если вы хотите выполнить AR с существующим кодом зрения, это более разумно. Основные подзадачи:
Первая задача - локализация ключевых точек. Методы для этого включают в себя обнаружение ключевых точек SIFT, детектор угла Харриса и другие. Некоторые из них имеют реализации с открытым исходным кодом - я думаю, что OpenCV имеет угловой детектор Harris в функции GoodFeatureToTrack.
Вторая задача - создание дескрипторов региона. Методы для этого включают SIFT-дескрипторы, HOG-дескрипторы и многие другие. Где-то должна быть реализация одного из них с открытым исходным кодом.
Третья задача также выполняется локализаторами ключевых точек. В идеале вы хотите аффинное преобразование, так как это покажет вам, как маркер сидит в 3-пространстве. Для этого должен работать аффинный детектор Харриса. Более подробная информация приведена здесь: http://en.wikipedia.org/wiki/Harris_affine_region_detector
-121--3366964- Вы читали эту статью ? В случае, если ссылка сгнивает, в ней говорится все, что действительно нужно сделать, чтобы переопределить метод stringToValue
AbstractFormatter, например:
public Object stringToValue(String text) throws ParseException {
Pattern pattern = getPattern();
if (pattern != null) {
Matcher matcher = pattern.matcher(text);
if (matcher.matches()) {
return super.stringToValue(text);
}
throw new ParseException("Pattern did not match", 0);
}
return text;
}
На самом деле быстрый поиск дает несколько полностью реализованных, свободных решений; не были ли они достаточными для ваших потребностей?