GWT: создание виджета Canvas из CanvasElement - PullRequest
3 голосов
/ 12 августа 2011

Я хочу обернуть CanvasElement (<canvas> в HTML) в виджет Canvas.

Многие виджеты (например, Label) имеют статический метод SomeWidget.wrap(Element) для переноса существующего элемента DOM,Я полагаю, что в Canvas нет такого метода, потому что не все браузеры поддерживают, и поэтому пользователь должен пройти через createIfSupported().

К сожалению, конструктор в Canvas является закрытым (защищенный будет работать), что означает, чтоХолст не может быть разделен на подклассы.(В производном классе нет доступных конструкторов.)

Фрагменты кода createIfSupported и конструктор в классе Canvas:

  public static Canvas createIfSupported() {
    // check if canvas is supported; if it is not supported: return null
    return new Canvas(element);
  }

  private Canvas(CanvasElement element) {
    setElement(element);
  }

В итоге я скопировал класс Canvasи сделать конструктор общедоступным.

Есть ли лучший способ сделать это?Если нет, в чем причина (кроме того, что <canvas> может не поддерживаться)?

Я использую GWT версии 2.4.0.rc1.

Спасибо, Джулиан

1 Ответ

1 голос
/ 25 мая 2015

Этот вопрос старый, но в более новых версиях GWT есть решение:

Canvas.wrap(canvasElement);

См. javadocs .

Не знаю, в какомВерсия GWT была добавлена, но работает на 2.7.0.

...