2011-07-27 39 views
10

Uygulamamın tam ekranını ayarlamak için windows görev çubuğu yüksekliğini dinamik olarak nasıl alacağımı anlayamıyorum.
Bildiğiniz gibi, görev çubuğu dört pozisyonda olabilir: alt, üst, sol veya sağ, bu yüzden pencere sınırlarını ayarlamak için mevcut pozisyonu bilmek mümkün olup olmadığını merak ediyorum.Windows görev çubuğu yüksekliği/genişliği

DÜZENLEME:

GraphicsDevice myDevice; 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 

Ama tam ekran modunda çalıştırmak için Uygulama istiyorsanız ben NullPointerException

+0

Jframe/frame kullanıyor musunuz? – Pratik

+0

evet üzgünüm, JFrame kullanıyorum – mastaH

cevap

5

10'nu oluşturduğunuzda. JFrame API

jFrame = new JFrame("TESTER"); 
jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

dikkate Görev Çubuğu pozisyon almak otomatik tam ekrana Pencerenizi ve kurulacaktır MAXIMIZED_BOTH ayarı içinde setExtendedState() yöntemine bir çağrı yapın. yanı,

int taskbarheight = Toolkit.getDefaultToolkit().getScreenSize().height 
    - GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height(); 

veya kullanabilirsiniz:

Dimension scrnSize = Toolkit.getDefaultToolkit().getScreenSize(); 
Rectangle winSize = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); 

int taskBarHeight = scrnSize.height - winSize.height; 
+0

Bu bir çözüm olabilir, ancak JFrame tam ekranını ayarlamak ve "normal" boyutuna geri dönmek için bir geçiş yöntemini umuyordum. – mastaH

+0

'jFrame.setSize (450,450)' gibi bir varsayılan boyut ayarlayabilir ve daha sonra 'jFrame.setExtendedState (JFrame.MAXIMIZED_BOTH) öğesini çağırabilirsiniz; pencerenin üstündeki en üst düzeye çıkar düğmesine bastığınızda, iki boyut arasında geçiş yapar. –

+0

Bir düğmeyle maksimum ile normal arasında geçiş yapmanın bir yolu var mı? – mastaH

2

alacağım bunu aşağıdaki şekilde girebilirsiniz: Lukas bağlantıyı kullanarak bu tryied uygun bir GraphicsDevice alma ve setFullScreenWindow(Window)-method kullanarak: daha (ve daha eksiksiz) bilgi için

GraphicsDevice myDevice = GraphicsEnvironment. 
    getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 

.)

+0

Şu an kontrol ediyorum – mastaH

21

O gerekirse, Windows görev çubuğu yüksekliği elde etmek mümkündür

JFrame frame = new JFrame(); 
frame.setSize(GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getSize(); 
0

Bu yazdığım bir programın parçası:

public enum Location { 
    TOP, RIGHT, BOTTOM, LEFT; 
} 

private static final class Taskbar { 
    public final Location location; 
    public final int width, height; 

    private Taskbar(Location location, int width, int height) { 
     this.location = location; 
     this.width = width; 
     this.height = height; 
    } 

    public static Taskbar getTaskbar() { 
     Rectangle other = GraphicsEnvironment.getLocalGraphicsEnvironment() 
       .getMaximumWindowBounds(); 
     return new Taskbar(other.x != 0 ? Location.TOP 
       : (other.y != 0 ? Location.LEFT 
         : (other.width == IFrame.width ? Location.BOTTOM 
           : Location.RIGHT)), IFrame.width 
       - other.width, IFrame.height - other.height); 
    } 
} 

Esasen, Taskbar.getTaskbar() çağrı konumu (TOP, RIGHT, BOTTOM, LEFT), genişliği ve yüksekliği ile ilgili bilgileri içeren bir görev çubuğu verecektir.

İlgili konular