Вы также можете использовать join
, например:
select t1.column2
from mytable t1 left join
(select distinct t2.column2 from mytable t2 where t2.column1='A') t3 on t1.column2=t3.column2
where t3.column2 is null
Вы, вероятно, вручную вызываете setVisible (true)
в меню. Это может вызвать неприятные ошибки в меню.
Метод show (Component, int x, int x)
обрабатывает все, что вам нужно, (выделение элементов при наведении курсора и закрытие всплывающего окна при необходимости) при использовании setVisible ( true)
просто показывает меню без добавления какого-либо дополнительного поведения.
Чтобы создать всплывающее меню правой кнопкой мыши, просто создайте JPopupMenu
.
class PopUpDemo extends JPopupMenu {
JMenuItem anItem;
public PopUpDemo() {
anItem = new JMenuItem("Click Me!");
add(anItem);
}
}
Затем все, что вам нужно сделать, это добавить пользовательский MouseListener
для компонентов, для которых вы бы хотели, чтобы всплыло меню.
class PopClickListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
private void doPop(MouseEvent e) {
PopUpDemo menu = new PopUpDemo();
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
// Then on your component(s)
component.addMouseListener(new PopClickListener());
Конечно,
В есть раздел «Вывод всплывающего меню » в Как использовать меню статья Учебники по Java , в которой объясняется, как использовать класс JPopupMenu
.
Пример кода в руководстве показывает, как добавить MouseListener
к компонентам, которые должны отображать всплывающее меню и отображать меню соответствующим образом.
(Метод, который вы описываете, довольно похож к тому, как учебник представляет способ показать всплывающее меню на компоненте.)