Есть JFrame внутри которого расположен JButton и SingleGraph. На viewer'e графа стоит AutoLayout. Поскольку не нашёл среди стандартных методов выделения, для viewer'a реализовал слушателя согласно гайду. Переопределил методы зажатия:
public void mousePressed(MouseEvent e) {
x1 = MouseInfo.getPointerInfo().getLocation().x;
y1 = MouseInfo.getPointerInfo().getLocation().y;
//vpipe.pump();
//System.out.println("Pump it!");
}
И отпускания мыши:
public void mouseReleased(MouseEvent e) {
x2 = MouseInfo.getPointerInfo().getLocation().x;
y2 = MouseInfo.getPointerInfo().getLocation().y;
Collection<GraphicElement> selected = vw.allNodesOrSpritesIn(x1,y1,x2,y2);
selected.forEach((c)->c.setAttribute("ui.label","Selected"));
vpipe.pump();
}
Но при этом метки не устанавливаются, не могу понять в чём проблема.
MouseInfo.getPointerInfo().getLocation() возвращает абсолютную позицию, а allNodesOrSpritesIn(x1,y1,x2,y2) относительную. Решением является получение относительной позиции курсора от MouseEvent через getX() и getY().
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости