Pregunta

Tengo un JTable en el interior de un JScrollPane. Estoy creando un editor de celda personalizado para una de las columnas de la tabla, y quiero que este editor para que aparezca un JList desplazamiento. He hecho esto mediante el uso de un Popup para mostrar un nuevo JScrollPane que contiene el JList.

Todo está funcionando, a excepción de la posición de la Popup. Mi componente personalizado para el editor se ve básicamente como esto:

public class CustomPanel extends JPanel {
    JTextField text = new JTextField();
    JList list = new JList();
    JScrollPane scroll = new JScrollPane(list);
    Component owner = null;
    public CustomPanel(Component owner) {
        this.owner = owner;
        add(text);
    }
    public void showPopup() {
        Popup p = PopupFactory.getPopup(owner, scroll, getX(), getY()+getHeight());
        p.show();
    }
}

Lo que está sucediendo es que getX() y getY() están regresando la posición de la celda de la tabla relativa a la celebración de JScrollPane, y Popup es querer posición de la pantalla absoluta. Incluso si paso en el owner JScrollPane que son en relación con, no funciona. Me sale el mismo problema si uso text.getX() / text.getY().

¿Cómo puedo colocar mi Popup directamente debajo de la TextBox?

Sólo un poco más de fondo: La meta final es un cuadro combinado de selección múltiple que muestra todos los elementos seleccionados como una lista separada por comas. Si algo como esto ya existe, por favor no dude en señalarme a él.

Editar: owner.getLocationOnScreen().y + getY() no funciona cuando el panel de desplazamiento es desplazado en cualquier lugar, pero todo el camino hacia arriba. Sin embargo, sólo getLocationOnScreen().y llanura funciona. Problema resuelto, gracias.

¿Fue útil?

Solución

Puede consultar la posición de la pantalla absoluta con Component.getLocationOnScreen() . Es eso lo que está buscando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top