2016-01-21 10 views
6

में खुलती है मेरे पास दो मॉनीटर हैं। मेरे पास दूसरी मॉनीटर पर ग्रहण खुला है लेकिन जब मैं अपना जावाएफएक्स कोड चलाता हूं, तो जावाएफएक्स विंडो हमेशा पहली मॉनीटर में खुलती है और हर बार इसे इस्तेमाल करने के लिए इसे दूसरी मॉनीटर पर खींचना पड़ता है।चुनें कि कौन सी मॉनिटर जावाफ़ैक्स विंडो

मुझे ऐसा करना है क्योंकि जब यह पहली मॉनीटर पर खुलता है, तो दृश्य के अंदर कोई भी घटक लोड नहीं होता है। यह केवल तभी लोड हो जाता है जब मैं इसे दूसरी मॉनीटर पर खींचूं। लेकिन जब मैं दूसरी मॉनीटर डिस्कनेक्ट करता हूं, तो यह ठीक से लोड होता है।

क्या कोई मेरी मदद कर सकता है? डिफ़ॉल्ट रूप से, मैं विंडो को दूसरे मॉनिटर पर कैसे खोलूं?

एनबी: मेरा पहला मॉनिटर एक मैकबुक प्रो है और दूसरा एक आईमैक बाहरी मॉनीटर के रूप में उपयोग किया जाता है।

की गई टिप्पणियों का जवाब देते हुए:

screen1 पर ठीक से लोड नहीं घटकों की समस्या किसी भी सरल JavaFX कोड के साथ होता है। उदाहरण के लिए और सुविधा के लिए, मैं वह कोड ले रहा हूं जिसे @ सर्गी ने जवाब के रूप में दिया है।

कोड:

public class FXScreens extends Application { 

    @Override 
    public void start(Stage stage) { 
     VBox root = new VBox(10); 
     root.setAlignment(Pos.CENTER); 
     Scene scene = new Scene(root, 200, 250); 

     int index = 1; 
     for (Screen screen : Screen.getScreens()) { 
      Rectangle2D bounds = screen.getVisualBounds(); 

      Button btn = new Button("Move me to Screen " + index++); 
      btn.setOnAction((e) -> { 
       stage.setX(bounds.getMinX() + 100); 
       stage.setY(bounds.getMinY() + 100); 
      }); 
      root.getChildren().add(btn); 
     } 

     stage.setTitle("Screen Jumper"); 
     stage.setScene(scene); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

जब मैं या तो ग्रहण के साथ या एक टर्मिनल के साथ screen2 से लॉन्च करते हैं, इस स्क्रीन 1 पर दिखने वाली चीज़ों है: Faulty load खिड़की का आकार बदलने से मुझे घटकों लेकिन सिर्फ ज़ूम प्रदर्शित नहीं करता है उन्हें। मैं बटन पर भी क्लिक करने में सक्षम नहीं हूं। loaded

दो अन्य पर नज़र रखता है अभी भी जुड़ा के साथ, अगर मैं खींचें screen1 को ग्रहण और वहाँ से कोड चलाने के लिए, यह ठीक से लोड करता है: runs properly

जब मैं स्क्रीन 2 को यह खींचें, तो वह ऐसा हो जाता है

मुझे यह भी जोड़ना चाहिए कि एक बार जब मैं इसे दूसरी स्क्रीन पर खींचूं और घटकों को लोड किया जाता है, तो वे किसी भी स्क्रीन पर अच्छी तरह से काम करते हैं।

+1

आप 'स्क्रीन' के साथ कुछ काम करने की संभावना बना सकते हैं। [यहां] देखें (https://community.oracle.com/thread/2593365?tstart=0) (इस समय एक पूर्ण उत्तर पर काम करने का कोई समय नहीं)। – Itai

+0

मैं 'स्क्रीन' के उपयोग पर @sillyfly से सहमत हूं। हालांकि आपके विवरण से, सामग्री केवल दूसरी स्क्रीन पर लोड हो रही है, मुझे लगता है कि कुछ गंभीरता से गलत है या यह इरादा व्यवहार है? यदि नहीं, तो आपको इसकी जांच करनी चाहिए और कार्यवाही को लागू करने के बजाय इसे ठीक करना चाहिए। – hotzst

+1

क्या आप एक उदाहरण प्रदान कर सकते हैं कि मैं अपने दोहरी-मॉनीटर सेटअप पर परीक्षण कर सकता हूं? –

उत्तर

6

आप Screen.getScreens() पुन: सक्रिय कर सकते हैं और अपने stage को आवश्यकतानुसार ले जा सकते हैं। नीचे उदाहरण देखें।

public class FXScreens extends Application { 

    @Override 
    public void start(Stage stage) { 
     VBox root = new VBox(10); 
     root.setAlignment(Pos.CENTER); 
     Scene scene = new Scene(root, 200, 250); 

     int index = 1; 
     for (Screen screen : Screen.getScreens()) { 
      Rectangle2D bounds = screen.getVisualBounds(); 

      Button btn = new Button("Move me to Screen " + index++); 
      btn.setOnAction((e) -> { 
       stage.setX(bounds.getMinX() + 100); 
       stage.setY(bounds.getMinY() + 100); 
      }); 
      root.getChildren().add(btn); 
     } 

     stage.setTitle("Screen Jumper"); 
     stage.setScene(scene); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

दुर्भाग्य से मैं प्राथमिक स्क्रीन पर लोड नहीं होने वाले घटकों के साथ मदद नहीं कर सकता। कृपया पता करने के लिए अधिक जानकारी दें कि (कौन से घटक, वे कैसे बनाए गए हैं, कोड नमूना, आदि)

+0

मैंने प्रश्न में और जानकारी जोड़ दी है –

संबंधित मुद्दे