2016-11-05 5 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?Массив JPanel, на 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

Я не говорю, что ваш код не работает, но он не объясняет, почему ** его код ** не работает. –