2012-03-03 13 views
9

Ho questo codice all'interno della mia classe MainWindow:Java Windows 8 Schermo intero?

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

In Windows 7 + Java 6, funziona come schermo intero bene. Posso cliccare ovunque senza problemi. Tuttavia, in Windows 8 + Java 6, tutta la colonna di pixel più a sinistra, ad eccezione di circa 100 in alto, e una casella in cui dovrebbe essere il pulsante di avvio, sono incasinate. Nella colonna e nella casella, il mio cursore si trasforma nuovamente in un normale mouse e la finestra ignora i miei clic. Nella casella di avvio, facendo clic su viene visualizzato il menu di avvio anziché concedere al mio programma un evento click. Questo sembra essere un problema con Java, perché funziona ovunque ma W8. Sai cosa c'è di sbagliato/come sistemarlo o aggirarlo?

+7

Windows 8 è ancora beta, quindi non aspettatevi una perfetta compatibilità con i vostri driver e Java VM. – Sibbo

+0

Ma possiamo aspettarci che venga risolto? –

+0

All'avvio di Windows 8, si lavorerà a una correzione, forse prima;) Dev'essere corretto, ma non so quando. – Sibbo

risposta

0

mai risposto correttamente questo ... E 'stato un problema con il JRE su Windows 8 per sé. Ora risolto.

0

Bene, se la tua classe MainWindow è un JFame, non è necessario utilizzare getContentPane(). Non penso che tu abbia bisogno della funzione setFullScreen.

0

Prova questo fuori per schermo intero, di solito si preferisce usare la metà della larghezza e l'altezza della dimensione dello schermo originale

Toolkit toolkit = Toolkit.getDefaultToolKit(); 

Dimension d = toolkit.getScreenSize(); 

int w = d.width; 

int h = d.height; 

setSize(w,h); 
1

Ho avuto un problema simile prima, nella parte inferiore della finestra era sempre tagliato fuori su macchine Windows, e l'aggiunta di queste righe risolto il problema:

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

Supponendo che la classe MainWindow estende JFrame, chiamare questi due metodi dovrebbe fare il trucco.

0

Si può facilmente semplicemente inserire questo all'interno del vostro costruttore

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

}