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