2016-03-28 20 views
-2

私はフルスクリーンウィンドウを使用するか、通常のJFrameウィンドウを使用するかを選択できるクラスを作成しようとしていました。フルスクリーンモードを作成する際の問題

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

}

私は、メソッドを呼び出すsetFullscreenMode試したとき、それは動作しません:ここではコードです。私が選んだモードにかかわらず、1280 x 720のフレームを私にくれました。ここで私はそれを呼ばれる方法は次のとおりです。私はあなたがcheckFullscreenMode()を呼び出していないことに気づい

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

答えて

1

。しかし実際には、この方法はフレームをフルスクリーンにします。したがってFramesetVisibleメソッドを無効にしてここにcheckFullscreenMode()と呼び出してください。それは仕事をしない」

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

:ここ

は、作業コードです。 2つのサイズのパラメータを持たない場合、エラーが発生します。 –

+0

コンストラクタ識別子を 'public Frame(String title){'に変更します。 – rdonuk

+0

答えにコンストラクタを追加しました。 – rdonuk

関連する問題