2009-04-06 39 views
5

Tôi đang làm việc trên một ứng dụng java swing sẽ được sử dụng trong một thử nghiệm tâm lý và các nhà nghiên cứu đã yêu cầu tôi làm cho chương trình "bôi đen màn hình" để không có kích thích bên ngoài cho người dùng. Họ muốn ứng dụng xoay thực sự toàn màn hình và không có bất kỳ loại thanh tiêu đề nào hoặc thu nhỏ/tối đa/đóng các nút ở trên cùng.Làm cách nào để tạo ứng dụng Java Swing bao gồm thanh Tiêu đề Windows?

Phần mềm này sẽ được chạy trong một môi trường Windows XP sử dụng JavaSE 6.

Làm thế nào tôi có thể làm điều này và vui lòng cung cấp một đoạn mã nếu có.

Cảm ơn!

Trả lời

11

Sử dụng API Java toàn màn hình?

http://java.sun.com/docs/books/tutorial/extra/fullscreen/exclusivemode.html

http://www.artificis.hu/2006/03/16/java-awtswing-fullscreen

JFrame fr = new JFrame(); 
fr.setResizable(false); 
if (!fr.isDisplayable()) { 
    // Can only do this when the frame is not visible 
    fr.setUndecorated(true); 
} 
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
try { 
    if (gd.isFullScreenSupported()) { 
    gd.setFullScreenWindow(fr); 
    } else { 
    // Can't run fullscreen, need to bodge around it (setSize to screen size, etc) 
    } 
    fr.setVisible(true); 
    // Your business logic here 
} finally { 
    gd.setFullScreenWindow(null); 
} 
+0

Bạn có thể giải thích (chính xác) cách các API này được sử dụng thay vì chỉ đăng liên kết không? Tôi rõ ràng sẽ đọc các liên kết nhưng vẫn ... – HipsterZipster

+0

Chế độ toàn màn hình sử dụng một mô hình khác với các ứng dụng Swing bình thường. Nó dành cho những thứ như trò chơi hoặc trình bảo vệ màn hình. Theo liên kết, "Hầu hết các ứng dụng độc quyền toàn màn hình đều phù hợp hơn để sử dụng các cửa sổ chưa được đặt trước." Đó là một lựa chọn, nhưng sẽ yêu cầu bạn tự viết nhiều mã hơn. – erickson

+0

Đó là kết hợp của cả hai liên kết, chưa được kiểm tra. Giúp đỡ? – JeeBee

9

Sử dụng thuộc tính setUndecorated(true). Lưu ý rằng điều này phải được thực hiện trước khi hiển thị khung.

JFrame frame = new JFrame(); 
Toolkit tk = Toolkit.getDefaultToolkit(); 
frame.setBounds(new Rectangle(new Point(0, 0), tk.getScreenSize())); 
frame.setUndecorated(true); 
frame.setVisible(true); 
0

Tôi biết chủ đề này là cũ nhưng tôi tìm thấy nó trong khi tìm kiếm trên làm thế nào để làm điều tương tự bản thân mình. Tôi không thể tìm thấy bất kỳ giải pháp tôi muốn sử dụng vì vậy tôi đã đưa ra điều này. Tôi thấy rằng giải pháp dưới đây không chỉ hoạt động mà còn đơn giản hơn nhiều so với các câu trả lời ở trên.

JFrame frame = new JFrame(); 
frame.setResizable(false); 
frame.setUndecorated(true); 
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setSize(dim); 
frame.setVisible(true); 
Các vấn đề liên quan