2012-03-03 6 views
9

Mam ten kod w mojej klasie MainWindow:Java Windows 8 Pełny ekran?

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

W Windows 7 + Java 6, działa w trybie pełnoekranowym dobrze. Bez problemu mogę kliknąć w dowolnym miejscu. Jednak w Windows 8 + Java 6, cała lewa kolumna pikseli z wyjątkiem około 100 w górnej części i pole, w którym powinien znajdować się przycisk start, jest pomieszana. W kolumnie i okienku mój kursor znowu zmienia się w zwykłą myszkę, a okno ignoruje kliknięcia. W polu początkowym kliknięcie powoduje wyświetlenie menu startowego zamiast przyznawania mojemu programowi zdarzenia kliknięcia. To wydaje się być problemem z Javą, ponieważ działa wszędzie, ale w W8. Czy wiesz, co jest nie tak/jak to naprawić lub obejść?

+7

System Windows 8 to wciąż wersja beta, więc nie oczekuj idealnej zgodności ze sterownikami i maszyną wirtualną Java. – Sibbo

+0

Ale czy możemy się spodziewać, że zostanie naprawiony? –

+0

Po uruchomieniu Windows 8, będą pracować nad poprawką, może wcześniej;) To musi być naprawione, ale nie wiem kiedy. – Sibbo

Odpowiedz

0

nigdy nie odpowiedział na to właściwie ... To był problem z JRE w systemie Windows 8 sam. Teraz naprawiony.

0

Jeśli twoja klasa MainWindow to JFrame, nie musisz używać getContentPane(). Nie sądzę, że potrzebujesz funkcji setFullScreen.

0

Spróbuj tego na pełnym ekranie, zwykle korzystne jest użycie połowę szerokości i wysokości oryginalnej wielkości ekranu

Toolkit toolkit = Toolkit.getDefaultToolKit(); 

Dimension d = toolkit.getScreenSize(); 

int w = d.width; 

int h = d.height; 

setSize(w,h); 
1

Miałem podobny problem przed, w dolnej części okna był już odcięty na komputerach z systemem Windows, a dodanie w tych liniach naprawił problem:

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

Zakładając, że twoja klasa MainWindow rozciąga JFrame, nazywając te dwie metody powinno wystarczyć.

0

Można łatwo wystarczy umieścić ten wewnątrz konstruktora

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

}