Question

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

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

J'essaie de trouver une méthode dans

Toolkit.getDefaultToolkit()

mais n'a pas pu trouver quelque chose.

Savez-vous comment je peux détecter le moniteur sur lequel un cadre JFrame est affiché?

Java-Version 1.4 Windows XP

Merci

Était-ce utile?

La solution

Répondez si la solution de tous les moniteurs disponibles est la même.

Pour AWT :

Chaque contrôle a la méthode getMonitor () à partir de laquelle la position d'écran get peut être calculée comme suit:

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 :

Ce n’est qu’une simple brèche dans mon code original. vous devriez demander si les valeurs de retour ne sont pas nulles ou 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;
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top