Dodawanie kilkudziesieciu jpaneli

0

Witam,
tablice nie są mają mocną stroną, a chciałbym nauczyć się dodawać automatycznie kilkudziesięciu paneli, żeby nie musieć wpisywać ręcznie, bo wiem, że to strata czasu i kiedy tak robię, to aż źle się z tym czuję :D

Otóż stworzyłem coś takiego:

import javax.swing.*;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
public class Droga implements ActionListener
{
JFrame fr = new JFrame();
    JPanel x1y1 = new JPanel(); JPanel x1y2 = new JPanel(); JPanel x1y3 = new JPanel(); JPanel x1y4 = new JPanel(); 
    JPanel x2y1 = new JPanel(); JPanel x2y2 = new JPanel(); JPanel x2y3 = new JPanel(); JPanel x2y4 = new JPanel(); 
    JPanel x3y1 = new JPanel(); JPanel x3y2 = new JPanel(); JPanel x3y3 = new JPanel(); JPanel x3y4 = new JPanel(); 
    JPanel x4y1 = new JPanel(); JPanel x4y2 = new JPanel(); JPanel x4y3 = new JPanel(); JPanel x4y4 = new JPanel(); 
	
    int ix1y1 = 1, ix1y2 = 1, ix1y3 = 1, ix1y4 = 1;
    int ix2y1 = 1, ix2y2 = 1, ix2y3 = 1, ix2y4 = 1;
    int ix3y1 = 1, ix3y2 = 1, ix3y3 = 1, ix3y4 = 1;
    int ix4y1 = 1, ix4y2 = 1, ix4y3 = 1, ix4y4 = 1;
    
    JButton start = new JButton("Start");
    int bstart = 0;    
    GridLayout grid = new GridLayout(4,4);
    JPanel panelglowny = new JPanel();
    JPanel panelopcji = new JPanel();
	public static void main(String[] args) 
	{
		new Droga();
		
	}
	
	public Droga()
	{
            fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fr.setSize(300,300);
            fr.setVisible(true);
            fr.setResizable(false);
            fr.setLayout(new BorderLayout());
            panelglowny.setBackground(Color.yellow);
            fr.add("Center",panelglowny);
            fr.add("East",panelopcji);
            panelopcji.add(start);            
            panelglowny.setLayout(grid);
            start.addActionListener(this);
                
                x1y1.setBackground(Color.white); x1y2.setBackground(Color.white); x1y3.setBackground(Color.white); x1y4.setBackground(Color.white); 
                x2y1.setBackground(Color.white); x2y2.setBackground(Color.white); x2y3.setBackground(Color.white); x2y4.setBackground(Color.white); 
                x3y1.setBackground(Color.white); x3y2.setBackground(Color.white); x3y3.setBackground(Color.white); x3y4.setBackground(Color.white); 
                x4y1.setBackground(Color.white); x4y2.setBackground(Color.white); x4y3.setBackground(Color.white); x4y4.setBackground(Color.white); 
            
                x1y1.setBorder(BorderFactory.createLineBorder(Color.black)); x1y2.setBorder(BorderFactory.createLineBorder(Color.black)); x1y3.setBorder(BorderFactory.createLineBorder(Color.black)); x1y4.setBorder(BorderFactory.createLineBorder(Color.black)); 
                x2y1.setBorder(BorderFactory.createLineBorder(Color.black)); x2y2.setBorder(BorderFactory.createLineBorder(Color.black)); x2y3.setBorder(BorderFactory.createLineBorder(Color.black)); x2y4.setBorder(BorderFactory.createLineBorder(Color.black)); 
                x3y1.setBorder(BorderFactory.createLineBorder(Color.black)); x3y2.setBorder(BorderFactory.createLineBorder(Color.black)); x3y3.setBorder(BorderFactory.createLineBorder(Color.black)); x3y4.setBorder(BorderFactory.createLineBorder(Color.black)); 
                x4y1.setBorder(BorderFactory.createLineBorder(Color.black)); x4y2.setBorder(BorderFactory.createLineBorder(Color.black)); x4y3.setBorder(BorderFactory.createLineBorder(Color.black)); x4y4.setBorder(BorderFactory.createLineBorder(Color.black)); 
		
                panelglowny.add(x1y1); panelglowny.add(x1y2); panelglowny.add(x1y3); panelglowny.add(x1y4); 
                panelglowny.add(x2y1); panelglowny.add(x2y2); panelglowny.add(x2y3); panelglowny.add(x2y4); 
                panelglowny.add(x3y1); panelglowny.add(x3y2); panelglowny.add(x3y3); panelglowny.add(x3y4); 
                panelglowny.add(x4y1); panelglowny.add(x4y2); panelglowny.add(x4y3); panelglowny.add(x4y4); 
                
                
                
                
		x1y1.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix1y1 = 0; x1y1.setBackground(Color.red);       }});
                x1y2.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix1y2 = 0; x1y2.setBackground(Color.red);       }});
                x1y3.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix1y3 = 0; x1y3.setBackground(Color.red);       }});
              x1y4.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix1y4 = 0; x1y4.setBackground(Color.red);       }});
       
              x2y1.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix2y1 = 0; x2y1.setBackground(Color.red);       }});
		x2y2.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix2y2 = 0; x2y2.setBackground(Color.red);       }});
                x2y3.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix2y3 = 0; x2y3.setBackground(Color.red);       }});
                x2y4.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix2y4 = 0; x2y4.setBackground(Color.red);       }});
                
                x3y1.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix3y1 = 0; x3y1.setBackground(Color.red);       }});
                x3y2.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix3y2 = 0; x3y2.setBackground(Color.red);       }});
                x3y3.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix3y3 = 0; x3y3.setBackground(Color.red);       }});
                x3y4.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix3y4 = 0; x3y4.setBackground(Color.red);       }});
                
                x4y1.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix4y1 = 0; x4y1.setBackground(Color.red);       }});
                x4y2.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix4y2 = 0; x4y2.setBackground(Color.red);       }});
                x4y3.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix4y3 = 0; x4y3.setBackground(Color.red);       }});
                x4y4.addMouseListener(new java.awt.event.MouseAdapter() { 
        public void mouseClicked(java.awt.event.MouseEvent evt) {
             ix4y4 = 0; x4y4.setBackground(Color.red);       }});
		
                
	}
public void actionPerformed(ActionEvent zdarzenie){
    int m, n, i, j, x1, y1, x2, y2, krok=2;
    
    String area = "";
		boolean szukanie = true, znaleziono = false;
		
		m = 4;
		n = 4;
		m += 2;
		n += 2;
		int teren[][] = new int[m][n];
		
		for(i=1; i<teren.length-1; i++)//wprowadanie danych
			for(j=1; j<teren[m-1].length-1; j++)
			{
				teren[1][1] = ix1y1; teren[1][2] = ix1y2; teren[1][3] = ix1y3; teren[1][4] = ix1y4;
                                teren[2][1] = ix2y1; teren[2][2] = ix2y2; teren[2][3] = ix2y3; teren[2][4] = ix2y4;
                                teren[3][1] = ix3y1; teren[3][2] = ix3y2; teren[3][3] = ix3y3; teren[3][4] = ix3y4;
                                teren[4][1] = ix4y1; teren[4][2] = ix4y2; teren[4][3] = ix4y3; teren[4][4] = ix4y4;
			}
                        if(teren[1][1] == -1){x1y1.setBackground(Color.blue);} if(teren[1][2] == -1){x1y2.setBackground(Color.blue);} if(teren[1][3] == -1){x1y3.setBackground(Color.blue);} if(teren[1][4] == -1){x1y4.setBackground(Color.blue);} 
                        if(teren[2][1] == -1){x2y1.setBackground(Color.blue);} if(teren[2][2] == -1){x2y2.setBackground(Color.blue);} if(teren[2][3] == -1){x2y3.setBackground(Color.blue);} if(teren[2][4] == -1){x2y4.setBackground(Color.blue);} 
                        if(teren[3][1] == -1){x3y1.setBackground(Color.blue);} if(teren[3][2] == -1){x3y2.setBackground(Color.blue);} if(teren[3][3] == -1){x3y3.setBackground(Color.blue);} if(teren[3][4] == -1){x3y4.setBackground(Color.blue);} 
                        if(teren[4][1] == -1){x4y1.setBackground(Color.blue);} if(teren[4][2] == -1){x4y2.setBackground(Color.blue);} if(teren[4][3] == -1){x4y3.setBackground(Color.blue);} if(teren[4][4] == -1){x4y4.setBackground(Color.blue);} 
                        
		}
}
}

Niepotrzebny kod usunąłem, zostawiłem tylko to co najgorsze. W taki sposób nigdy nie dodam planszy JPaneli 50x50, bo kod stałby się nieczytelny i za długi. Samą plansze 4x4 w taki sposób pisałem dosyć długo. Jak widać jest tu bardzo dużo powtarzających się etapów. Chciałbym, żeby ktoś pomógł mi w jakiś sposób "zautomatyzować" dodawanie paneli.
Pozdrawiam

0

Omg,

JPanel[][] panele = new JPanel[50][50];
for(int row=0;row<50;row++)
{
    for(int col=0;col<50;col++)
    {
        JPanel p = new JPanel();
        p.setBackground(Color.WHITE); 
        p.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        p.addMouseListener(new MouseAdapter()
        {
             public void mouseClicked(MouseEvent me)
             {
                  JPanel p = (JPanel)(me.getSource()); 
                  p.setBackground(Color.RED);
                  p.repaint();
             }
        });
        panele[row][col] = p;
        panelglowny.add(p);
    }
}

Korzystasz jeszcze ze stałych i...., proponuję by były one polami w klasie. Nie warto też tworzyć 2500 identycznych listenerów

class Listener extends MouseAdapter
{
    public void mouseClicked(MouseEvent me)
    {
        MojPanel p = (MojPanel)(me.getSource()); 
        p.setBackground(Color.RED);
        p.repaint();
        p.i = 0;    
    }
}
class MojPanel extends JPanel
{
    int i = 1;
    public MojPanel()
    {
        setBackground(Color.WHITE);
        setBorder(BorderFactory.createLineBorder(Color.BLACK)); 
    }
}
...
MojPanel[][] panele = new MojPanel[50][50];
MouseListener listener = new Listener();
for(int row=0;row<50;row++)
{
    for(int col=0;col<50;col++)
    {
        MojPanel p = new MojPanel();
        p.addMouseListener(listener);
        panele[row][col] = p;
        panelglowny.add(p);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1