veryfree | voila un truc que j ai trouver :
http://faqjava.developpez.com/?pag [...] hors_ecran
Lorsque l'on utilise la méthode show(java.awt.Component, int, int) pour afficher un javax.swing.JPopupMenu, les coordonnées correspondent au coin haut-gauche du menu. Si ces coordonnées sont trop près du bord de l'écran, une partie du menu est alors cachée. Nous allons donc surcharger la méthode show() pour que les coordonnées soient corrigées si le message est trop proche du bord de l'écran.
|
Code :
- 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);
- }
- }
|
Ce bug a été résolu dans la version 1.4 de l'API. Le correctif n'est pas nécessaire. |