2009-01-16 14 views
3

J'ai une application principale fenêtre JFrame qui peut inclure différents composants. J'ouvre un OnScreenKeyboard auto-implémenté lorsque l'utilisateur sélectionne un champ de texte modifiable. L'OSK est également une fenêtre JFrame.Détecter quel moniteur affiche la fenêtre

Lorsque l'utilisateur fait glisser la fenêtre principale vers un autre moniteur, l'OSK doit également être affiché sur le même moniteur. Pour cela je dois détecter le moniteur JFrame principal est montré.

J'essaie de trouver une méthode dans

Toolkit.getDefaultToolkit() 

mais n'a pas été en mesure de trouver someting. Savez-vous comment je peux détecter le moniteur où un JFrame est montré?

Savez-vous comment je peux détecter le moniteur où un JFrame est montré?

Java Version 1.4 Windows XP

Merci

Répondre

4

réponse, si la solution de tous les moniteurs disponibles sont les mêmes.

Pour AWT:

Chaque contrôle a le méthode getMonitor() se peut calculée à partir comme à partir de laquelle la position de l'écran:

Monitor widgetMonitor = mTextWidget.getMonitor(); 
Rectangle monitorRect = widgetMonitor.getBounds(); 

if(monitorRect.x < 0){ 
    // shown in left monitor, starting from the main monitor 
} 

if(monitorRect.x > monitorRect.width){ 
    // shown in right monitor, starting from the main monitor 
} 

Pour SWT:

Il est juste un coup de feu sur mon code origial. vous devriez demander si les valeurs de retour ne sont pas nulles et quelque chose comme ça!

int monitorWidth = 0; 
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice[] screenDevices = ge.getScreenDevices(); 
    if(screenDevices.length > 0){ 
     monitorWidth = screenDevices[0].getDisplayMode().getWidth(); 
    } 


    Point ownerLocationOnScreen = owner.getLocationOnScreen(); 

    int screenMovingX = 0; 
    if(ownerLocationOnScreen.x < 0){ 
     screenMovingX = -monitorWidth; 
    } 
    if(ownerLocationOnScreen.x > monitorWidth){ 
     screenMovingX = monitorWidth; 
    } 
Questions connexes