2016-03-28 11 views
-2

Tam ekran penceresi mi yoksa boyutu seçtiğim normal JFrame penceresini mi seçmemi seçmeme izin veren bir sınıf oluşturmaya çalışıyordum.Tam Ekran Mod Oluşturmayla İlgili Sorunlar Sınıfı Seçme

public class Frame extends JFrame { 

boolean fse = false; 
int fsm = 0; 
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[1]; 

public Frame(String title, int width, int height) { 
    setTitle(title); 
    setSize(width, height); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setResizable(false); 
} 

private void checkFullscreenMode() { 
    switch(fsm) { 
    case 0: 
     setUndecorated(false); 
     System.out.println("No Fullscreen"); 
     break; 
    case 1: 
     setUndecorated(true); 
     setExtendedState(JFrame.MAXIMIZED_BOTH); 
     break; 
    case 2: 
     setUndecorated(true); 
     device.setFullScreenWindow(this); 
     break; 
    } 
} 

public void setFullscreenMode(int fsnm) { 
    fse = true; 
    if(fsm <= 2) { 
     this.fsm = fsnm; 
    } 
    else { 
     System.err.println("Error: Mode " + fsnm + " is not Supported!"); 
    } 
} 

}

Ben metod setFullscreenMode arama çalıştı

, işe yaramaz: İşte kod. Hangi modu seçtiğim önemli değil, bana 1280 x 720 çerçeve verdi. İşte bunu denilen nasıl: Sana checkFullscreenMode() demiyorsun fark

public class Main { 
    public static void main(String[] args) { 
     Frame frame = new Frame("TheDlooter", 1280, 720); 
     frame.setFullscreenMode(1); 
     frame.setVisible(true); 
    } 
} 

cevap

1

. Ama aslında bu yöntem çerçevenizi tam ekran haline getiriyor. Bu nedenle Frame numaralı telefondan setVisible yöntemini geçersiz kılın ve buradan checkFullscreenMode() numaralı telefonu arayın.

import java.awt.GraphicsDevice; 
import java.awt.GraphicsEnvironment; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Main { 
    public static void main(String[] args) { 
     Frame frame = new Frame("TheDlooter"); 
     frame.setFullscreenMode(1); 
     frame.setVisible(true); 
    } 
} 

class Frame extends JFrame { 

    boolean fse = false; 
    int fsm = 0; 
    GraphicsDevice device = 
    GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[1]; 

    public Frame(String title) { 
     setTitle(title); 

     add(new JLabel("ads")); 

     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setResizable(false); 
    } 

    @Override 
    public void setVisible(boolean b) { 
     checkFullscreenMode(); 
     super.setVisible(b); 
    } 

    public void checkFullscreenMode() { 
     switch (fsm) { 
     case 0: 
      setUndecorated(false); 
      System.out.println("No Fullscreen"); 
      break; 
     case 1: 
      setUndecorated(true); 
      setExtendedState(JFrame.MAXIMIZED_BOTH); 
      break; 
     case 2: 
      setUndecorated(true); 
      device.setFullScreenWindow(this); 
      break; 
     } 
    } 

    public void setFullscreenMode(int fsnm) { 
     fse = true; 
     if (fsm <= 2) { 
      this.fsm = fsnm; 
     } else { 
      System.err.println("Error: Mode " + fsnm + " is not Supported!"); 
     } 
    } 
} 
+0

It does not' iş: Burada

çalışma kodudur. İki boyut parametresine sahip olmamak bir hata verir. –

+0

Oluşturucu tanımlayıcısını 'public Frame (String title) {' olarak değiştirin. – rdonuk

+0

Cevabım için kurucu ekledim. – rdonuk