Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > mouseenter для скрытого компонента


Автор: clanda 1.12.2009, 05:18
Доброго времени суток!
есть проблема - на панели находится множество объектов, расположение которых задано в каком-то описании. у каждого из объектов есть набор определенных свойств (возможность выбора, координаты расположения, цвета..... и т.д.) сами объекты расширены от JComponent.
Вопрос заключается в том, что если несколько объектов находятся друг над другом, и нижний из копонентов можно выбрать, то верхний компонент не дает это сделать перекрывая собой, а в свою очередь если поменять их местами, то он будет не виден. Каким образом можно получить объект, лежащий под другим?
пробовал делать невидимым объект вот так, но не получается ничего
Код

public void mouseEntered(MouseEvent arg0){
    if (isSelectable()){ 
        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    } else {
        setVisible(false);
        getParent().repaint();
        Component c = getParent().getComponentAt(arg0.getX()+(int)HorizontalPosition, arg0.getY() + (int)VerticalPosition); 
        if (c instanceof BasicObject){
            ((MouseListener)c).mouseEntered(arg0);
        }
        setVisible(true);
        getParent().repaint();
    }
     movingOver = true;
     repaint();
}

public void mouseExited(MouseEvent arg0){
    if (isSelectable()){
        setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    } else {
        setVisible(false);
        getParent().repaint();
        Component c = getParent().getComponentAt(arg0.getX()+(int)HorizontalPosition, arg0.getY() + (int)VerticalPosition); 
        if (c instanceof BasicObject){
            ((MouseListener)c).mouseExited(arg0);
        }
        setVisible(true);
    }
    movingOver = false;
    repaint();
}


Автор: clanda 3.12.2009, 04:18
вопрос снимается - сделал так:
Код

public void mouseEntered(MouseEvent arg0){
    if (isSelectable()){ 
        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    } else {
        setVisible(false);
        setVisible(true);
    }
     movingOver = true;
     repaint();
}

public void mouseExited(MouseEvent arg0){
    if (isSelectable()){
        setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
    movingOver = false;
    repaint();
}

все работает!!! =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)