Witam,
mam problem z przesłaniem danych do innej metody, z tym, że dane te są tworzone w pętli for i przypisywane do dwuwymiarowej tablicy. Oto kod:
import javax.swing.*;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Droga3 implements ActionListener
{
JFrame fr = new JFrame();
int m = 22, n = 22, i, j, r, c;
JButton start = new JButton("Start");
GridLayout grid = new GridLayout(20,20);
JPanel panelglowny = new JPanel();
JPanel panelopcji = new JPanel();
JPanel teren[][];
int plansza[][] = new int[m][n];
public static void main(String[] args)
{
new Droga3();
}
public Droga3()
{
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setSize(300,300);
fr.setVisible(true);
fr.setResizable(true);
fr.setLayout(new BorderLayout());
panelglowny.setBackground(Color.yellow);
fr.add("Center",panelglowny);
fr.add("East",panelopcji);
panelglowny.setLayout(grid);
panelopcji.add(start);
start.addActionListener(this);
teren = new JPanel[20][20];
for(r=1; r<plansza.length-1; r++)//wprowadanie danych
for(c=1; c<plansza[m-1].length-1; c++)
plansza[r][c] = 1;
for (i = 1; i<=19; i++)
for(j = 1; j<=19; j++)
{
teren[i][j] = new JPanel();
teren[i][j].setBackground(Color.WHITE);
teren[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelglowny.add(teren[i][j]);
final int row = i;
final int col = j;
teren[i][j].addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
teren[row][col].setBackground(Color.RED); //chciałbym, żeby do każdego panelu była dopasowana //osobna plansza[r][c], oraz, że jak po kliknięciu zmienię kolor na czerwony, to automatycznie zmieni się również wartość //plansza[r][c] = 0;
teren[row][col].repaint();
}
});
panelglowny.revalidate();
panelglowny.repaint();
}
}
public void actionPerformed(ActionEvent zdarzenie){
String area = "";
for(r=0; r<plansza.length; r++)//wyswietlanie
{
for(c=0; c<plansza[m-1].length; c++)
{
area += plansza[r][c] + " ";
}
area += "\n";
}
JOptionPane.showMessageDialog(null, area, null, JOptionPane.INFORMATION_MESSAGE);
if(plansza[r][c] == -1){teren[i][j].setBackground(Color.blue);} // jeśli plansza[r][c] przyjmie wartość -1 to przypisany //jej panel teren[i][j] zmieni kolor z białego na niebieski
}
}
W komentarzach napisałem w czym tkwi problem. Zbędny kod usunąłem.