2017-11-23 1 views
0

이후의 JPanels를 연결할 새 Frame 객체를 만든 직후 객체 "j"에 대한 참조가 인식되지 않습니다.프레임 구성 후 코드가 읽히지 않는 이유는 무엇입니까?

package engine; 

import javax.swing.*; 

public class GamePanel extends JFrame{ 

    final int HEIGHT=700, WIDTH=500; 

    JFrame j= new JFrame("LittleRPG"); 
    j.setSize(HEIGHT, WIDTH); 
} 

j.setSize(); 수락되지 않고 오류가 나타납니다 (초기 구성 이후 모든 객체 참조에 적용됨). 나는 이유를 확인하는데 도움이 필요하다. 신선한 눈은 항상 도움이됩니다. - 감사합니다

+2

이 방법이 될에는 setSize 안 연장 할 필요가 없습니다? –

+1

JFrame을 확장하고 새 JFrame을 만드는 이유는 무엇입니까? 간단한 예제를 시작하기 위해 [How to Make Frames] (https://docs.oracle.com/javase/tutorial/uiswing/components/frame.html)의 Swing 튜토리얼의 섹션을 읽어 기본 스윙을 배웁니다. – camickr

답변

1

GamePanel 클래스에서 JFrame을 이미 확장 했으므로 크기를 설정하기 위해 JFrame의 개별 객체를 만들지 않아도됩니다.

package engine; 

import javax.swing.*; 

public class GamePanel extends JFrame 
{ 

    final int HEIGHT=700, WIDTH=500; 

    GamePanel() 
    { 
     setSize(HEIGHT, WIDTH); 
    } 

} 
1

귀하의 setSize(HEIGHT, WIDTH); 방법은 생성자 또는 다른 방법의 내부에 있어야한다 : 코드의 모양 그래서, 당신은 직접 생성자의 GamePanel에 설정할 수 있습니다. @Vikas Suryawanshi가 말했듯이, JFrame의 메소드를 호출 할 수 있습니다. 새로운 객체를 생성 할 필요가 없습니다.

+0

오 촬영 나는 그 b/c를 삭제했다 나는 아무것도 w/아직 그것을 모두 감사하지 않았다 – insertNameHere

0

@Tupfer 및 @Vikas의 답변이 정확합니다. 아직도 당신이 다음 또한

package engine; 

import javax.swing.*; 
import java.awt.Color; 

public class GamePanel extends JPanel{ 

    final int HEIGHT=700, WIDTH=500; 

    public static void main(String[] args){ 
     JFrame j= new JFrame("LittleRPG"); 
     j.setSize(HEIGHT, WIDTH); 
     j.getContentPane().add(new GamePanel()); 
     j.setVisible(true); 
     j.setLocationRelativeTo(null); 
     j.setBackground(Color.BLUE); 
     j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
} 

Jframe의 객체를 사용하여 수행 할 당신은 JFrame

관련 문제