Preguntas en los foros

Suelo visitar y participar en varios foros de java. Algunas preguntas son realmente curiosas, pero esta pregunta me ha llamado la atención. ¿Cómo se puede desplegar un Combo hacia arriba?. Será cuestión de investigarlo un poco …

Esta entrada fue publicada en anécdotas, varios. Guarda el enlace permanente.

6 respuestas a Preguntas en los foros

  1. DaniP dijo:

    Hola,

    No es un tema muy trivial, pero os puedo dar un par de pistillas …

    Se trata de definirle un UI (ComboxUI), que por ejemplo podéis pasarle en el constructor de vuestro combo:
    MyCombo()
    {
    super();
    setUI(MyComboUI());
    }
    ….

    este MyComboUI deberá extender del UI habitual para los combos, MetalComboBoxUI(), y deberá sobrescribir los métodos relativos a la gestión del popup:
    createPopup()

    y utilizar un popup propio que extienda del de por defecto.
    Esto es así, porque al contrario de lo que podría parecer, el popup no se distara por orden del combo, sino que el llamado arrowButton del combo (creado por la clase ComboBoxUI), es escuchado desde el popup, es decir, java establece al popup como listener del botón y panel del combo para hacerlo visible cuando actúas sobre él, y por ello para este tipo de manipulaciones debes terminar creando un popup propio que extienda del original, y alterando su setVisible(boolean) para modificar sus coordenadas gráficas.

    Siento que por falta de tiempo , no poder «ejemplificaros» mejor, pero si podéis echarle un vistazo a los fuentes de java, veréis que es muy fácil, no difícil es llegar a ese punto (ya que lo normal es pensar que el combo maneja al popup, y no que éste actúe por iniciativa propia).

    Un saludo,

    DaniP

  2. Chuidiang dijo:

    Muchas gracias, DaniP. Veo que te gusta meterte en las «interioridades» del código java. A ver si encuentro yo también algo de tiempo y me «sumerjo hasta el fondo». Gracias de nuevo.

    Se bueno.

  3. Lek dijo:

    Vaya… yo iba a decir que había que darle la vuelta al monitor, pero veo que se me adelantan con una respuesta de verdad ^^

  4. Chuidiang dijo:

    Uy, en el ordenador que tengo en el trabajo no hace falta. Basta con pulsar a la vez Ctrl-Alt-Flecha arriba y toda la imágen de la pantalla se pone boca abajo.

    De todas formas, lo propongo como reto. A ver quién es el primero que pone un trozo de código que haga eso exactamente. Incluso podeis contestarlo en el foro en cuestión 😉

    Sed buenos.

  5. DaniP dijo:

    Bueno…

    Ahora que tengo un poquito más de tiempo te completo con que la clase MyPopup que extienda de BasicComboPopup, deberá sobreescribir el método computePopupBounds, para darle la vuelta a las coordenadas que devolvería la llamada al super, y así en lugar de que sea y=0, utilizas un y=-height, en el Rectangle que debes devolver.

    Espero que os haya servido.

    Un saludo,

    DaniP

  6. Chuidiang dijo:

    Gracias, he puesto el comentario en el foro, para que la persona en cuestión pueda echarle un ojo.

    Se bueno.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.