2012-03-03 47 views
9

tôi có mã này bên trong lớp học của tôi MainWindow:Java Windows 8 toàn màn hình?

public MainWindow() { 
    super("Shouldn't be visible..."); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setAlwaysOnTop(true); 
    setUndecorated(true); 
    setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); 

    addFocusListener(new FocusLostExiter()); 
    addKeyListener(new EscListener()); 

    setContentPane(canvas); 

    getContentPane().setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize()); 
    pack(); 
    setResizable(false); 
} 

public void setFullScreen(boolean b) { 
    if(!b) { 
     device.setFullScreenWindow(null); 
    } 
    setVisible(b); 
    //System.out.println(device.getFullScreenWindow()); 
    if(b) { 
     device.setFullScreenWindow(this); 
    } 
} 

Trong Windows 7 + Java 6, nó hoạt động như toàn màn hình tốt. Tôi có thể bấm vào bất cứ nơi nào mà không có vấn đề gì. Tuy nhiên, trong Windows 8 + Java 6, tất cả các cột ngoài cùng bên trái của pixel ngoại trừ khoảng 100 gần đầu, và một hộp nơi nút khởi động nên được, được điều sai lầm. Trong cột và hộp, con trỏ của tôi thay đổi thành con chuột bình thường và cửa sổ bỏ qua nhấp chuột của tôi. Trong hộp bắt đầu, nhấp vào hiển thị menu bắt đầu thay vì cho chương trình của tôi một sự kiện nhấp chuột. Điều này có vẻ là một vấn đề với Java, gây ra nó hoạt động ở mọi nơi nhưng W8. Bạn có biết những gì sai/làm thế nào để sửa chữa hoặc có được xung quanh nó?

+7

Windows 8 vẫn là phiên bản beta, vì vậy đừng mong đợi khả năng tương thích hoàn hảo với trình điều khiển và máy ảo Java của bạn. – Sibbo

+0

Nhưng chúng ta có thể mong đợi nó được sửa? –

+0

Khi Windows 8 đã khởi chạy, họ sẽ sửa chữa, có thể trước đó;) Nó phải được sửa, nhưng tôi không biết khi nào. – Sibbo

Trả lời

0

Không bao giờ trả lời này đúng ... Đó là một vấn đề với JRE trên Windows 8 chính nó. Bây giờ đã được sửa.

0

Vâng, nếu lớp MainWindow của bạn là JFrame, thì bạn không phải sử dụng getContentPane(). Tôi không nghĩ bạn cần hàm setFullScreen.

0

Hãy thử điều này ra cho toàn màn hình, thường nó được ưa thích sử dụng một nửa chiều rộng và chiều cao của kích thước màn hình ban đầu

Toolkit toolkit = Toolkit.getDefaultToolKit(); 

Dimension d = toolkit.getScreenSize(); 

int w = d.width; 

int h = d.height; 

setSize(w,h); 
1

Tôi đã có một vấn đề tương tự trước đây, dưới cùng của cửa sổ được việc cắt đứt trên máy Windows và thêm các dòng này đã khắc phục sự cố:

frame.setLocationByPlatform(true); 
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

Giả sử rằng lớp MainWindow của bạn mở rộng JFrame, hãy gọi hai phương thức này sẽ thực hiện thủ thuật.

0

Bạn có thể dễ dàng chỉ cần đặt này bên trong constructor của bạn

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
setBounds(0,0,screenSize.width, screenSize.height); 
1
public NewFrame(){ 

    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 

    this.setSize(Toolkit.getDefaultToolkit().getScreenSize()); 

    this.setVisible(true); 

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