Detect which monitor shows the Window

前端 未结 1 922
谎友^
谎友^ 2021-02-11 00:29

I do have main application JFrame window which can include different components. I open a self implemented OnScreenKeyboard when the user select a editable textfield. The OSK is

1条回答
  •  生来不讨喜
    2021-02-11 00:45

    Answer, if the solution of all available monitors are the same.

    For AWT:

    Every Control does have the method getMonitor() from which the screen position get can calculated from like:

    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
    }
    

    For SWT:

    It is just a snip at my origial code. you should ask if return values are not null ans something like this!

        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;
        }
    

    0 讨论(0)
提交回复
热议问题