سؤال

ولدي الرئيسي نافذة التطبيق JFrame التي يمكن أن تشمل عناصر مختلفة. I فتح الذات تنفيذ OnScreenKeyboard عندما يقوم المستخدم تحديد حيز النص للتحرير. وOSK هو أيضا نافذة JFrame.

وعندما يقوم المستخدم اسحب النافذة الرئيسية لرصد آخر، يجب أن تظهر OSK أيضا على نفس الشاشة. لهذا لا بد لي من الكشف عن الشاشة يظهر JFrame الرئيسي.

وأحاول أن أجد طريقة في

Toolkit.getDefaultToolkit()

ولكن لم يكن قادرا على العثور سوميتينج.

هل تعرف كيف يمكنني الكشف عن الشاشة حيث أظهرت JFrame؟

وجافا الإصدار 1.4 ويندوز XP

والشكر

هل كانت مفيدة؟

المحلول

والإجابة إذا حل جميع المراقبين المتاحة هي نفسها.

لعلى AWT : ل

وكل تحكم لديها طريقة getMonitor () من الذي وضع شاشة حصول على أن تحسب من مثل:

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
}

لعلى بسم الله الرحمن الرحيم : ل

وانها مجرد قصاصة في قانون بلدي origial. يجب عليك أن تسأل إذا القيم المرجعة ليست الجواب فارغة شيئا من هذا القبيل!

    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;
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top