Witam. Piszę sobie program, żeby utrwalić sobie parę rzeczy. Mam 3 klasy: w jednej tworzę okno, w drugiej planszę z JPaneli, która jest wyświetlana w oknie, a trzecia klasa to słuchacz przycisków. Chciałbym aby po wciśnięciu na klawiaturze jednej ze strzałek zostało zmienione tło odpowiedniego JPanelu na planszy. Program się kompiluje i uruchamia ale po wciśnięciu strzałki element nie zmienia tła.
public class Plansza extends JComponent{
private JPanel plansza = new JPanel();
private JPanel[][] pole = new JPanel[30][10];
private int a=0,b=5;
public JComponent tworzenie;
{
plansza.setSize(300,800);
plansza.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createRaisedBevelBorder(),BorderFactory.createEmptyBorder(5,5,5,5)));
plansza.setLayout(new GridLayout(30,10));
plansza.setLocation(10,10);
for(int i=0;i<30;i++){
for (int j=0;j<10;j++){
pole[i][j] = new JPanel();
pole[i][j].setBorder(BorderFactory.createLineBorder(Color.black));//ramka
plansza.add(pole[i][j]);
}
}
add(plansza);
pole[0][5].setBackground(Color.black);
}
public void lewo(){
pole[5][5].setBackground(Color.black); //to nie działa
System.out.println("działa");
}
}
a tak wywołuję metodę w klasie słuchacza
Plansza plansza = new Plansza();
...
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_LEFT){
plansza.lewo();
}
}
Ogólnie metoda jest wywoływana, bo wyświetla się napis "działa". Próbowałem umieszczać repaint() w różnych miejscach jednak to nie pomogło. Czy oprócz tego problemu klasa z planszą wygląda ok? Czy czegoś nie powinienem robić lub coś mam robić w inny sposób?