2010-03-23 12 views
6

Hareketli çerçeveli bir Java uygulaması yazıyorum ve Linux'ta bir tuhaflıkla karşılaşıyorum. CentOS altında GNOME 2.16.0 çalıştırıyorum.Java JFrame'i Linux masaüstümden kısmen nasıl taşıyabilirim?

Sınırları ekranın yarısı kadar olan herhangi bir konuma ayarlamak için JFrame.setBounds'u kullandığımda, aslında çerçevenin konumunu, ekranda tamamen kalırken belirtilen sınırlara mümkün olduğunca yakın olacak şekilde ayarlar.

Java'ya, ekranın yarısı bile olsa, GNOME'a belirttiğim çerçeveyi gerçekten koymasını söylemek için nasıl söylerim?

İşte, -50, 50 ekran dışı olduğunu varsayarak, sorunu gösteren bazı örnek kodlar. Çerçeve hala başlık çubuğundan ekrandan sürüklenebilir, ancak setLocation veya setBounds çağrıları çalışmaz.

Bu, Windows'ta sorunsuz çalışır.

 
JFrame frame = new JFrame(); 
frame.setPreferredSize(new Dimension(200, 200)); 
frame.pack(); 
frame.setVisible(true); 
frame.setLocation(-50, 50); 
+0

Java UI'nin Ahh Joy'ları tüm platformlarda aynı şekilde davranmıyor ... Cevabın Java tarafında bulunmadığını söyleyebilirim, ama yanılıyor olabilirim (bu nedenle cevap yerine yorum yazabilirim) :) – Romain

cevap

3

Java'da mümkün olduğunu sanmıyorum, ancak yanlış olduğunu kanıtlamaktan zevk alırım. Bunu bir özellik olarak görüyorum, kayıp pencerelerin riskini azaltmak anlamına geliyor. Mac OS X ve Ubuntu'da da benzer bir şey oluyor. İşte tinkering için bir ilkel example. Belki biri Windows üzerinde deneyebilir.

+0

JDK6 kullanarak Windows XP. SetLocation (-50, 0) kullandım ve başlık çubuğunun bir kısmı ekrandan çıktı. – camickr

+0

Buna baktığınız için teşekkür ederim, camickr. Romain Muller'ın öne sürdüğü gibi, bu uygulama uygulamaya bağlı olabilir. – trashgod

+0

Çerçevenin yarısını ekrandan sürükleyebileceğim tuhaf ama orada koymak için setBounds kullanamıyorum. Hala bunun için bir çözüm arıyorum. Bu arada, java.awt.graphicsenv sistem özelliklerinin sun.awt.Win32GraphicsEnvironment 'e ayarlanıp ayarlanmadığını kontrol edeceğimi düşünüyorum, çünkü bu göründüğü tek yer aslında ekranda bir çerçeve yarısı ayarlayabiliyor. Eğer değilse, o zaman mantığımı ekran dışı bir çerçeve hareket ettirmeye bile çalışamıyorum. –

İlgili konular