Modismo de codificación para implementar un comportamiento personalizado de contracción/expansión en SWT
Frecuentes
Visto 173 equipos
0
Tengo un widget personalizado (un grupo que contiene otros compuestos) que se parece a la imagen superior:
Quiero implementar el comportamiento de que cuando el usuario hace doble clic en "algún texto", el widget colapsa a algo como la imagen inferior.
Si se vuelve a hacer doble clic en "algún texto", el widget se expande a la versión original.
Podría implementar esto destruyendo/creando los otros widgets dentro del rectángulo verde (es decir, el texto pequeño, el rectángulo redondeado y el círculo) y luego llamando a pack() en el rectángulo verde al hacer doble clic, pero me preguntaba si había Cuál es un idioma de codificación más elegante para implementar el comportamiento descrito? Nota: no quiero usar un widget con un botón de alternar designado (por ejemplo, un PGroup).
1 Respuestas
1
Si utiliza GridLayout
de GridData
en cada elemento se puede utilizar:
(GridData)data = (GridData)control.getLayoutData();
data.exclude = true;
control.setVisible(false);
para ocultar un control, cuando todos los controles están ocultos use layout()
en el compuesto padre. Para volver a mostrar invertir el exclude
y setVisible
llamadas.
Respondido 14 Feb 14, 08:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java swt eclipse-rcp eclipse-plugin or haz tu propia pregunta.
¡Gracias, Greg! Esto es bastante elegante. ¿Hay alguna manera de que pueda disminuir el tamaño del rectángulo redondeado y el círculo (son objetos de imagen), sin tener que destruir los originales y recrearlos con imágenes de menor tamaño? - Steph
No estoy seguro de lo que quiere decir con objeto de imagen en este contexto. Podrías usar un
Label
desetImage
y simplemente cambiar entre dos imágenes. - greg-449Esto funciona, Greg. Usé un enfoque similar: un lienzo en el que dibujo imágenes de diferentes tamaños, dependiendo de si el widget está en estado expandido o colapsado. Me preguntaba si existe un método SWT, por ejemplo, "acercar/alejar" que se puede usar con una sola imagen, en lugar de intercambiar diferentes imágenes. - Steph