1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class MonPopupMenu extends JPopupMenu {
public void show(Component invoker, int x, int y) {
/**Dimension de l'écran */
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
/** Dimension du Menu popup */
Dimension popupSize = this.getPreferredSize();
/** Position en x,y du popup à l'écran (pour le .show) */
double xPopupEcran = invoker.getLocationOnScreen().getX() + x;
double yPopupEcran = invoker.getLocationOnScreen().getY() + y;
/** Si le popup déborde de l'écran sur la droite on décale sur x */
if ((xPopupEcran + popupSize.getWidth()) > screenSize.getWidth()) {
x = x - (int)popupSize.getWidth();
}
/** Si le popup déborde de l'écran sur le bas on décale sur y */
if ((yPopupEcran + popupSize.getHeight()) > screenSize.getHeight()) {
y = y - (int)popupSize.getHeight();
}
/** On affiche le popup à l'endroit judicieusement calculé :) */
super.show(invoker, x, y);
}
} |
Partager