2016-01-21 15 views
6

İki monitörüm var. Eclipse'i ikinci monitörde açtım ama JavaFX kodumu çalıştırdığımda, JavaFX penceresi her zaman ilk monitörde açılır ve her seferinde onu kullanmak için ikinci monitöre sürüklemem gerekir.Bir JavaFX penceresinin hangi monitörde açılacağını seçin

Bunu yapmak zorundayım çünkü ilk monitörde açıldığında, sahne içindeki bileşenlerin hiçbiri yüklenmiyor. Sadece ikinci monitöre sürüklediğimde yüklenir. Ama ikinci monitörü çıkardığımda düzgün şekilde yüklenir.

Birisi bana yardım edebilir mi? Varsayılan olarak, pencereyi ikinci monitörde açmak için nasıl yaparım?

NB: İlk monitörüm bir Macbook Pro ve ikincisi ise harici bir monitör olarak kullanılan bir iMac.

yapılan yorumlarına yanıt veren:

bileşenleri screen1 düzgün yüklenmemesi sorunu herhangi basit JavaFX kodu ile olur

. Örneğin kolaylık sağlamak için, @Sergey'in cevap olarak verdiği kodu alıyorum.

kodu: Tutulma ile veya bir terminal ile ya Ekran2 bu başlattığınızda

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

, bu ekranda 1 görünenden geçerli: Faulty load pencerenin boyutunu değiştirmek bana bileşenleri ama sadece yakınlaştırır göstermiyor onlar. Düğmelere de tıklayamıyorum. Ben screen1 gölgede ve oradan kod çalıştırmasına sürüklerseniz diğer iki monitör hala bağlıyken loaded

, düzgün yükler: runs properly

Ekranda 2 Bu sürüklediğinizde

, böyle olur

Ayrıca, diğer ekrana sürüklediğimde ve bileşenler yüklendikten sonra, herhangi bir ekranda iyi çalıştığını eklemeliyim.

+1

Muhtemelen 'Screen' ile bir şeyler yapabileceksiniz. Bkz. [Burada] (https://community.oracle.com/thread/2593365?tstart=0) (Şu anda tam bir yanıt için çalışmak için zaman yok). – Itai

+0

"Screen" kullanımı ile @sillyfly katılıyorum. Ancak açıklamanızdan, içerik sadece ikinci ekrana yüklenirken sanırım ciddi bir yanlışlık var mı yoksa bu amaçlanan davranış mı? Aksi halde, bir geçici çözüm uygulamak yerine bunu araştırmanız ve düzeltmeniz gerekir. – hotzst

+1

Çift monitör kurulumumda test edebileceğim bir örnek sunabilir misiniz? –

cevap

6

Screen.getScreens()'u yineleyebilir ve stage numaralı telefonunuzu gereken yere taşıyabilirsiniz. Aşağıdaki örneğe bakın.

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

Maalesef, ana ekranda yüklemeyen bileşenlerle ilgili olarak yardımcı olamıyorum. Lütfen (hangi bileşenlerin, nasıl oluşturulduğunun, kod örneğinin vb.) Daha fazla ayrıntı sağlayınız

+0

Soruya daha fazla bilgi ekledim –