2016-11-05 3 views
1
public frame() { 
    JFrame frame = new JFrame("Test"); 
    frame.setSize(400,300); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new GridBagLayout()); 
    int i = 4; 
    int j = 4; 
    JPanel[][] panelHolder = new JPanel[i][j]; 

    for (int a = 0; a < i; a++) { 
     for (int b = 0; b < j; b++) { 
      panelHolder[a][b] = new JPanel(); 
      add(panelHolder[a][b]); 
     } 
    } 
    panelHolder[3][2].setForeground(Color.BLUE); 
    JButton enter = new JButton("Enter"); 
    panelHolder[0][0].add(enter); 

    frame.setVisible(true); 

내가 패널에 구성 요소를 추가하거나 컬러 아무것도 내가 다른 곳에서이 코드를 사용하지만 다른 일을 적어 다시 찾을 수없는, 변경되지 않는 설정하려고 ,하지만 루프가 프레임에 JPanels를 추가하고 있습니까? 왜 JPanels에 추가 할 수 없습니까?배열 JFrame의

+1

를 생성자와 같은 이름의 JFrame의이 왜? – ItamarG3

+0

해결 했습니까? – ItamarG3

+0

코드가 작동하지 않는 이유를 묻는 질문에 올바른 [mcve]를 게시하십시오. 실제로 코드를 컴파일하고 실행할 수 있다면 더 나은 답변을 얻을 수 있습니다. 링크를 읽으십시오 - mcve는 짧아야하고 컴파일해야하며 링크가 없어야합니다. 운. –

답변

5

문제는 생성자에서 클래스와 동일한 이름의 개체가 있지만 setVisible()을 호출 할 때 해당 개체를 사용하고 있지 않다는 것입니다. 당신함으로써 클래스가이 생성자를 사용하여 다음 JFrame을 확장하고 있음을 해결할 수 :

public frame() { 
    setSize(400, 300); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new GridBagLayout()); 
    int i = 4; 
    int j = 4; 
    JPanel[][] panelHolder = new JPanel[i][j]; 

    for (int a = 0; a < i; a++) { 
     for (int b = 0; b < j; b++) { 
      panelHolder[a][b] = new JPanel(); 
      add(panelHolder[a][b]); 
     } 
    } 
    panelHolder[3][2].setForeground(Color.BLUE); 
    JButton enter = new JButton("Enter"); 
    panelHolder[0][0].add(enter); 

    setVisible(true); 
} 
+0

변수 이름은 문제와 관련이 없습니다. 혼란 스럽네요. 문제의 원인은 아니지만 (아직 알 수 있습니다.) –

+0

정말입니까? 코드를 테스트했기 때문에 작동합니다 ... – ItamarG3

+0

나는 코드가 작동하지 않는다고 말하는 것이 아니라 코드가 작동하지 않는 이유를 설명하지 않습니다. –