2014-07-14 2 views
0

Java 프로그래밍에서 전체 화면 표시를 시도하지만 실행 할 때마다 검은 색 화면 만 표시됩니다. 얘들 아 날 도와 줄 수있어?스윙에서 전체 화면 표시 설정

DisplayMode dm = new DisplayMode(1024,768,16, DisplayMode.REFRESH_RATE_UNKNOWN); 
    bucky b = new bucky(); 
    b.run(dm); 
} 

public void run(DisplayMode dm){ 
    setBackground(Color.PINK); 
    setForeground(Color.WHITE); 
    setFont(new Font("Arial", Font.PLAIN, 24)); 

    Screen s = new Screen(); 
    try{ 
     s.SetFullScreen(dm, this); 
     try{ 
      Thread.sleep(5000); 

    }catch(Exception ex){} 
    }finally{ 
     s.restoreScreen(); 
    } 
} 

public void paint(Graphics g){ 
    if(g instanceof Graphics2D){ 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

    } 
    g.drawString("This is gona be awesome", 200, 200); 
} 
} 
+1

https://weblogs.java.net/blog/mkarg/archive/2010/01/03/fullscreen-mode-cool에서 http : // WWW. codeproject.com/Tips/407544/How-to-Make-Frame-Full-Screen-in-Java – StanislavL

+2

MCVE가 없다면'Thread.sleep'이 범인이라고 생각합니다. [전체 화면 독점 모드] (http://docs.oracle.com/javase/tutorial/extra/fullscreen/example.html) 또는 간단히 ['frame.setExtendedState (JFrame.MAXIMIZED_BOTH)'] (http://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html#getExtendedState--). 모든 화면에서 작동하지 않는 마법 번호를 사용 중입니다. 더 나은 도움을 얻으려면 [최소, 컴파일 가능한, 실행 가능한 예제]로 편집하십시오 (http://stackoverflow.com/help/mcve) –

+0

'..catch (Exception ex) {} ..'는'..catch (Exception 예) {ex.printStackTrace(); } ..' –

답변

0

paint(Graphics g)는 전체 화면 모드에서 그릴 수있는 적합한 장소가 아니다.

BufferStrategy bufferStrategy = mainFrame.getBufferStrategy(); 
Graphics g = bufferStrategy.getDrawGraphics(); 

을 당신이 원하는 무엇이든 그릴 g를 사용

당신은 버퍼 전략에서 그래픽을 취득해야합니다.

다음은 전체 코드 예제있다 :

/** 
* This test takes a number up to 13 as an argument (assumes 2 by 
* default) and creates a multiple buffer strategy with the number of 
* buffers given. This application enters full-screen mode, if available, 
* and flips back and forth between each buffer (each signified by a different 
* color). 
*/ 

import java.awt.*; 
import java.awt.image.BufferStrategy; 

public class MultiBufferTest { 

    private static Color[] COLORS = new Color[] { 
     Color.red, Color.blue, Color.green, Color.white, Color.black, 
     Color.yellow, Color.gray, Color.cyan, Color.pink, Color.lightGray, 
     Color.magenta, Color.orange, Color.darkGray }; 
    private static DisplayMode[] BEST_DISPLAY_MODES = new DisplayMode[] { 
     new DisplayMode(640, 480, 32, 0), 
     new DisplayMode(640, 480, 16, 0), 
     new DisplayMode(640, 480, 8, 0) 
    }; 

    Frame mainFrame; 

    public MultiBufferTest(int numBuffers, GraphicsDevice device) { 
     try { 
      GraphicsConfiguration gc = device.getDefaultConfiguration(); 
      mainFrame = new Frame(gc); 
      mainFrame.setUndecorated(true); 
      mainFrame.setIgnoreRepaint(true); 
      device.setFullScreenWindow(mainFrame); 
      if (device.isDisplayChangeSupported()) { 
       chooseBestDisplayMode(device); 
      } 
      Rectangle bounds = mainFrame.getBounds(); 
      mainFrame.createBufferStrategy(numBuffers); 
      BufferStrategy bufferStrategy = mainFrame.getBufferStrategy(); 
      for (float lag = 2000.0f; lag > 0.00000006f; lag = lag/1.33f) { 
       for (int i = 0; i < numBuffers; i++) { 
        Graphics g = bufferStrategy.getDrawGraphics(); 
        if (!bufferStrategy.contentsLost()) { 
         g.setColor(COLORS[i]); 
         g.fillRect(0,0,bounds.width, bounds.height); 
         bufferStrategy.show(); 
         g.dispose(); 
        } 
        try { 
         Thread.sleep((int)lag); 
        } catch (InterruptedException e) {} 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      device.setFullScreenWindow(null); 
     } 
    } 

    private static DisplayMode getBestDisplayMode(GraphicsDevice device) { 
     for (int x = 0; x < BEST_DISPLAY_MODES.length; x++) { 
      DisplayMode[] modes = device.getDisplayModes(); 
      for (int i = 0; i < modes.length; i++) { 
       if (modes[i].getWidth() == BEST_DISPLAY_MODES[x].getWidth() 
        && modes[i].getHeight() == BEST_DISPLAY_MODES[x].getHeight() 
        && modes[i].getBitDepth() == BEST_DISPLAY_MODES[x].getBitDepth() 
        ) { 
        return BEST_DISPLAY_MODES[x]; 
       } 
      } 
     } 
     return null; 
    } 

    public static void chooseBestDisplayMode(GraphicsDevice device) { 
     DisplayMode best = getBestDisplayMode(device); 
     if (best != null) { 
      device.setDisplayMode(best); 
     } 
    } 

    public static void main(String[] args) { 
     try { 
      int numBuffers = 2; 
      if (args != null && args.length > 0) { 
       numBuffers = Integer.parseInt(args[0]); 
       if (numBuffers < 2 || numBuffers > COLORS.length) { 
        System.err.println("Must specify between 2 and " 
         + COLORS.length + " buffers"); 
        System.exit(1); 
       } 
      } 
      GraphicsEnvironment env = GraphicsEnvironment. 
       getLocalGraphicsEnvironment(); 
      GraphicsDevice device = env.getDefaultScreenDevice(); 
      MultiBufferTest test = new MultiBufferTest(numBuffers, device); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.exit(0); 
    } 
} 
관련 문제