Я нашел решение, используя метод JQuery resizable ().Чтобы использовать его в проекте GWT, я использовал JSNI (собственный интерфейс Javascript) для интеграции кода Javascript в ваш проект GWT.
Шаги
- Установите идентификатор элемента виджета, размер которого мы хотим изменить в GWT.
- Добавьте библиотеки JQuery на начальную страницу проекта GWT (index.html или index.jsp).
- Создать метод JSNI.Метод вызовет метод JQuery resizable () для идентификатора элемента, установленного на шаге 1.
- Вызовите свой метод JSNI в своем коде в какой-то момент после метода GWT.create () или uiBinder.createAndBindUi (this).
Пример
Шаг 1. Установите идентификатор элемента:
private final String TEXT_AREA_ID = HTMLPanel.createUniqueId();
textArea.getElement().setId(TEXT_AREA_ID);
Шаг 2. На странице index.html / jspдобавьте это:
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
Шаг 3. Создайте свой метод JSNI:
public class JSNIResizer
{
public static native void resize(String textAreaId) /*-{
// Internet Explorer. IE 11 uses 'trident'.
var isIE = ($wnd.navigator.userAgent.match(/msie/i) || $wnd.navigator.userAgent.match(/trident/i));
// Only apply this to IE browsers
if (isIE) {
var textArea = $wnd.$("#" + textAreaId);
if (textArea) {
textArea.resizable({
handles : 'n, s' // handle vertical resizing only.
});
// Optional: Adds a css style from jquery-ui.css
textArea.addClass("ui-widget-content");
}
}
}-*/;
}
Обратите внимание, что вы можете сделать это, если не хотите ограничивать его только вертикальным изменением размера:
textArea.resizable();
Шаг 4. Назовите его с идентификатором элемента для изменения размера:
JSNIResizer.resize(TEXT_AREA_ID);