J'essaie de reproduire le comportement d'une cellule de feuille de calcul en utilisant GWT. J'ai été capable de créer un widget Composite appelé "Cell" qui est par défaut un widget "Label". Lorsqu'un utilisateur clique sur ce widget, il devient un widget "TextBox". Lors d'un événement de flou, le widget devient à nouveau un widget "Label".GWT Spreadsheet Cell
Ma question concerne l'efficacité et le temps de rendu. Il serait probablement plus facile de simplement faire de ma "cellule" une "TextBox" et de simplement changer l'apparence de l'utilisateur via CSS (selon qu'ils entrent ou non des données). Cependant, je pense que cela affectera le temps de rendu et donc je retourne à un widget "Label" chaque fois que l'entrée n'est pas nécessaire. Le problème avec cette méthode, cependant, est que je crée fondamentalement un nouveau TextBox/Label chaque fois que l'utilisateur doit entrer quelque chose dans la "cellule".
Voici mon pseudo-code (puisque je ne suis pas autour d'un 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;
}
}
...
Quand il y a un onBlurEvent sur la zone de texte ou quand il y a un événement onClick sur l'étiquette, le SWITCHMODE La méthode() est appelée. La critique du code est la bienvenue. Est-il préférable d'inclure une zone de texte et une étiquette en tant que variables privées de la classe Cell, puis d'ajouter ou de supprimer l'objet correspondant selon les besoins?
avait-il pas pensé à cela, mais oui, ce serait sans doute encore mieux. Je suis curieux en termes d'efficacité (à la fois dans mon code et dans le rendu des pages), quelle serait la meilleure méthode? –
vous pouvez créer 2 exemples simples et utiliser la vitesse Tracer pour les surveiller. – mrras