간단히 말해, 전 화면으로 작업하고있는 게임을 만들려고합니다.JPanels, JFrames 및 Windows, 오 마이!
I가 내가 사용하려고 다음 코드를이와
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gs = ge.getDefaultScreenDevice();
if(!gs.isFullScreenSupported()) {
System.out.println("full-screen not supported");
}
Frame frame = new Frame(gs.getDefaultConfiguration());
Window win = new Window(frame);
try {
// Enter full-screen mode
gs.setFullScreenWindow(win);
win.validate();
}
문제는 내가 JPanel의를 확장하는 클래스 내에서 작동하고, 나는 타입 프레임의 변수를 가지고있는 동안, 나는 아무도이 없다는 것입니다 클래스 내의 Window 타입.
JPanel에 대한 이해는 그것이 일종의 윈도우라는 것을 이해하지만 gs.setFullScreenWindow (Window win)에 'this'를 전달할 수는 없습니다 ... 어떻게해야합니까?
JPanel을 사용하여 쉽게 호출하거나 비슷한 방법으로 호출 할 수 있습니까?
내 JPanel에서 Window 유형을 얻을 수있는 방법이 있습니까?
-
편집 : 다음 방법은 JFrame의 상태를 변경하고 10ms마다라고합니다 :
나는 경우 (g = 후 몇 중복 또는 불필요한 호출이있을 수 있습니다 것으로 예상public void paintScreen()
{
Graphics g;
try{
g = this.getGraphics(); //get Panel's graphic context
if(g == null)
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(frame.getExtendedState()|JFrame.MAXIMIZED_BOTH);
frame.add(this);
frame.pack();
frame.setResizable(false);
frame.setTitle("Game Window");
frame.setVisible(true);
}
if((g != null) && (dbImage != null))
{
g.drawImage(dbImage, 0, 0, null);
}
Toolkit.getDefaultToolkit().sync(); //sync the display on some systems
g.dispose();
}
catch (Exception e)
{
if(blockError)
{
blockError = false;
}
else
{
System.out.println("Graphics context error: " + e);
}
}
}
= null) (모든 frame.somethingOrOther() s) 문, 클린업 조언을 주시면 감사하겠습니다 ...
또한 블록 오류가 발생합니다. 나는 오류를 무시하고있다. 오류는 한 번만 발생하며이 오류는 설치가 오류의 첫 번째 인스턴스를 무시할 때 올바르게 작동합니다 ... 누군가 관심이있는 사용자라면 해당 블록을 제거 할 수 있는지보고 싶다면 추가 정보를 게시 할 수 있지만 우려하지는 않습니다. ... 나중에 살펴볼 수 있습니다.
나는 API를 읽었지만 JFrame과 JPanel (오스카가 지적한 바와 같이)이 섞여있다. 내 실수. – Jonathan