2011-07-27 63 views
10

Tôi không thể tìm ra cách để có được động lực chiều cao thanh tác vụ của cửa sổ để đặt toàn màn hình ứng dụng của mình.
Như bạn đã biết, thanh tác vụ có thể ở bốn vị trí: dưới cùng, trên cùng, bên trái hoặc bên phải, vì vậy tôi tự hỏi liệu có thể biết vị trí hiện tại để đặt giới hạn cửa sổ hay không.Chiều cao/chiều rộng thanh tác vụ của Windows

EDIT: Sử dụng liên kết Lukas tôi tryied này:

GraphicsDevice myDevice; 
Window myWindow; 

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

Nhưng tôi gettin một NullPointerException

+0

bạn đang sử dụng Jframe/frame? – Pratik

+0

vâng xin lỗi, tôi đang sử dụng JFrame – mastaH

Trả lời

5

Khi bạn tạo JFrame. Thực hiện cuộc gọi đến các phương pháp setExtendedState() trong API JFrame

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

Thiết lập MAXIMIZED_BOTH sẽ thiết lập cửa sổ của bạn để toàn màn hình và tự động đưa vào tài khoản các vị trí của thanh Taskbar.

+0

Đây có thể là giải pháp, nhưng tôi đã hy vọng một phương pháp chuyển đổi để đặt chế độ toàn màn hình JFrame và quay lại kích thước "bình thường". – mastaH

+0

Bạn có thể đặt kích thước mặc định như 'jFrame.setSize (450,450)' và sau đó gọi 'jFrame.setExtendedState (JFrame.MAXIMIZED_BOTH);' khi bạn nhấn nút phóng to ở đầu cửa sổ, nó sẽ chuyển đổi giữa hai kích thước. –

+0

có cách nào để chuyển đổi giữa tối đa và bình thường bằng một nút không? – mastaH

2

Nếu bạn muốn ứng dụng của bạn chạy ở chế độ toàn màn hình, bạn có thể nhập nó bằng cách nhận được GraphicsDevice thích hợp và sử dụng setFullScreenWindow(Window)-method:

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

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

Để biết thêm thông tin (và đầy đủ hơn). xem Docs)

+0

Kiểm tra ngay bây giờ – mastaH

21

Có thể để có được chiều cao thanh tác vụ Windows nếu cần thiết:

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

int taskBarHeight = scrnSize.height - winSize.height; 
1

Bạn có thể sử dụng:

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

hoặc bạn có thể sử dụng, cũng như:

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

này là một phần của chương trình tôi đã viết:

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

Về cơ bản, gọi Taskbar.getTaskbar() sẽ cung cấp một thanh công cụ chứa các thông tin về vị trí của nó (TOP, RIGHT, BOTTOM, LEFT), chiều rộng của nó, và chiều cao của nó.

Các vấn đề liên quan