2014-09-22 2 views
2

나는이 다른 클래스를 가지고 있으며 그 안에 패널을 만들었습니다. Main 클래스에서이 패널을 어떻게 추가 할 수 있습니까? (이렇게하면 빈 창이 나옵니다).메인에 다른 클래스의 JPanel을 포함하는 방법

public class Other extends JFrame { 

    JTextField input = new JTextField(4); 

    public JPanel panel() { 
     //JPanel for all 
     JPanel totalGUI = new JPanel(); 
     totalGUI.setLayout(null); 

     //Input panel 
     JPanel inputPanel = new JPanel(); 
     inputPanel.setLayout(null); 
     inputPanel.setLocation(50,50); 
     inputPanel.setSize(250, 30); 
     totalGUI.add(inputPanel); 

     input.setSize(100,30); 
     input.setLocation(150,30); 
     inputPanel.add(input); 

     totalGUI.setOpaque(true); 
     return totalGUI; 
    } 

    public Other() { 
     super("Guess The Number"); 
    } 
} 

이 내 메인 클래스입니다 :

public class Main { 

    public static void main (String[] args) { 

     Other obj = new Other(); 
     obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     obj.setSize(300,300); 
     obj.setVisible(true); 
    } 
} 
+0

1. (기타) 생성자의 모든 것을 만들고,이 목적을 위해 주요 클래스를 사용 2.하지 않습니다, 3. 사용 확장 대신 JFrame을위한 로컬 변수 JFrame – mKorbel

+0

@mKorbel OP가'JFrame'을 확장하면 안되는 이유는 무엇입니까? – msrd0

+0

나는 이것을 명심 할 것이다. : D –

답변

2

당신은 Main 클래스에서 패널에 액세스 할해야합니다

obj.add(obj.panel()); 
-1

당신이 JFrame의 객체의 추가 함수를 호출하고 그것에 JPanel을 추가해야합니다.

public Other(){ 
    super("Guess The Number"); 
    add(panel()); 
} 
+0

왜'Main' 클래스에서 이것을합니까? – msrd0

+0

@arma_best 작동하지만 좋은 코드 스타일이 아닙니다. – msrd0

+0

나는 그것을 보았고 여러분과 @Nicolas Albert 방법을 사용하고 있습니다 : D –

3

그냥 생성자에 당신의 JFrameJPanel 추가 : 기본 기능에 , 다른 객체의 초기화 한 후이 작업을 수행 전혀 필요가 없습니다. 전체 프레임에 패널을 추가하려면 Other 생성자에이 쓰기 : 당신이 패널을 유지하고 그냥 패널을 추가하려면

setContentPane(panel()); 

는, 대신 쓰기 :

getContentPane().add(panel()); 

을 당신은 또한 수 이 줄을 사용하지만 AWT에서 여전히 존재하고 스윙 응용 프로그램에서 사용할 수 없습니다 :

add(panel()); 
관련 문제