Я пытаюсь воспроизвести поведение ячейки электронной таблицы с использованием GWT. Я смог создать виджет Composite под названием «Cell», который по умолчанию является виджлетом «Label». Когда пользователь нажимает на этот виджет, он становится виджетами «TextBox». В случае размытия виджет снова становится виджлетом «Ярлык».Ячейка электронных таблиц GWT
Мой вопрос касается эффективности и времени рендеринга. Вероятно, было бы проще всего сделать мою «ячейку» «TextBox» и просто изменить внешний вид для пользователя через CSS (в зависимости от того, входят ли они в данные или нет). Тем не менее, я думаю, что это повлияет на время рендеринга, и поэтому я вернусь к виджету «Ярлык», когда ввод не нужен. Проблема с этим методом, однако, заключается в том, что я в основном создаю новый TextBox/Label каждый раз, когда пользователю нужно что-то вводить в «Ячейку».
Вот мой псевдо-код (так как я не вокруг IDE) ...
public class Cell extends Composite {
private SimplePanel sp;
public Cell() {
Label l = new Label("");
sp.add(l);
}
private void switchMode() {
Widget w = sp.getWidget();
if (w instanceof Label) {
// we have a Label, change it to a TextBox
String text = ((Label) w).getText();
sp.remove(w);
sp.add(new TextBox(text));
// force garbage collection
w = null;
} else {
// we have a TextBox, change it to a Label
String text = ((TextBox) w).getText();
sp.remove(w);
sp.add(new Label(text));
// force garbage collection
w = null;
}
}
...
Когда есть onBlurEvent на TextBox или когда происходит событие OnClick на этикетке, то switchMode(). Критический код приветствуется.
Вместо этого было бы разумнее включать TextBox и Label в качестве частных переменных класса Cell, а затем просто добавлять или удалять соответствующий объект по мере необходимости?
Если бы не подумал об этом, но да, это, вероятно, будет еще лучше. Мне любопытно с точки зрения эффективности (как в моем коде, так и в рендеринге страницы), который был бы лучшим методом? –
вы можете создать 2 простых примера и использовать скорость Tracer, чтобы контролировать их. – mrras