Здравствуйте, Zelgadis, Вы писали:
Z>Здравствуйте возникла следующая проблема:
Z>необходимо создать JPopupMenu для JTree. Здесь и здесьАвтор: DemAS
Дата: 23.11.04
были предложены методы по создании менюшки, но у них есть серьёзный недостаток: при щелчке правой кнопкой мышки (что обычно вызывает появление менюшки) узел находящийся под курсором не выделяется. Поэтому для работы с определённым узлом необходимо сначала выделить его а затем вызывать меню, что крайне неудобно. Во многих приложениях же узлы выделяются перед выховом меню.
Z>Буду крайне благодарен если кто нибудь подскажет как это сделать.
Можно зарегистрировать MouseListener, в котором менять выделение, а потом показывать меню. Что-то типа:
MouseListener ml = new MouseAdapter() {
public void showPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show((Component) e.getSource(), e.getX(), e.getY());
}
}
@Override
public void mousePressed(MouseEvent e) {
int row = tree.getRowForLocation(e.getX(), e.getY());
if (row != -1) {
tree.setSelectionRow(row);
}
showPopup(e);
}
@Override
public void mouseReleased(MouseEvent e) {
showPopup(e);
}
};