Массив из JPanel - Java
Формулировка задачи:
Скажите могу ли я заполнить массив таким образом и как мне его затем можно вставить в JFrame?
import javax.swing.*;
import java.awt.*;
public class Activity {
public static void main(String[] args) throws Exception{
final int a=300, b=500;
JPanel[] panels=new JPanel[9];
for(int i=0;i<=9;i++){
panels[i]=new JPanel();
}
JFrame fr=new JFrame();
fr.setTitle("Dots");
fr.setVisible(true);
fr.setSize(a,b);
fr.pack();
JPanel mainPanel=new JPanel();
mainPanel.setBackground(Color.yellow);
mainPanel.setLayout(new GridLayout(3,3));
for(int q=0;q<=panels.length;q++){
mainPanel.add(panels[q]);
}
JButton button= new JButton(">>>");
fr.add(mainPanel);
mainPanel.setLayout(new BorderLayout());
mainPanel.add(button,BorderLayout.SOUTH);
}}Решение задачи: «Массив из JPanel»
textual
Листинг программы
package ru.alexp.tools;
import javax.swing.*;
import java.awt.*;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
public class Activity {
public static void main(String[] args) throws Exception{
final int a=300, b=500;
JPanel[] panels = new JPanel[9];
for(int i = 0; i < 9; i++){
final JPanel dot = new JPanel();
dot.add(new JLabel("(dotPanel)"));
panels[i] = dot;
}
JFrame fr=new JFrame();
fr.setTitle("Dots");
fr.setVisible(true);
fr.setSize(a,b);
fr.setLocationRelativeTo(null);
fr.setDefaultCloseOperation(EXIT_ON_CLOSE);
//fr.pack(); // он тут не нужен
JPanel mainPanel=new JPanel();
mainPanel.setBackground(Color.yellow);
mainPanel.setLayout(new GridLayout(3, 3, 5, 5)); // 2 последних значения -- отступы
for(int q = 0; q < panels.length; q++) {
mainPanel.add(panels[q]);
}
JButton button = new JButton(">>>");
fr.getContentPane().setLayout(new BorderLayout());
fr.getContentPane().add(button, BorderLayout.SOUTH);
fr.getContentPane().add(mainPanel, BorderLayout.CENTER);
}}