JFormattedTextField с помощью средства форматирования регулярного выражения?

После большого количества разочарования тем, чтобы заставлять JFormattedTextField работать с моими пользовательскими форматами, я задавался вопросом, был ли a Formatter или FormatterFactory это использует регулярные выражения?

Моя идея состоит в том что, если существует один, то я мог перенести его в статический класс и вызвать его как так:

mFormattedTextField.setFormatterFactory(
    SomeStaticClass.getRegexFormatFactory("^(\\d{1,}h)(\\s([0-5])?[0-9]m)?$"));

Посмотрите мой предыдущий вопрос для большего количества фона:
"Я хочу использовать JFormattedTextField, чтобы позволить пользователю вводить значения продолжительности времени в форму. Демонстрационные допустимые значения: 2h 30m 72h 15m 6h 0h"

6
задан Community 23 May 2017 в 12:22
поделиться

1 ответ

Если вы хотите добавить шаблон, вы можете добавить что-то подобное в класс массива:

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 с существующим кодом зрения, это более разумно. Основные подзадачи:

  1. Найдите маркеры на изображении или видео.
  2. Убедитесь, что именно они вам нужны.
  3. Узнайте, как они ориентированы относительно камеры.

Первая задача - локализация ключевых точек. Методы для этого включают в себя обнаружение ключевых точек 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;
}

На самом деле быстрый поиск дает несколько полностью реализованных, свободных решений; не были ли они достаточными для ваших потребностей?

3
ответ дан 17 December 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: