Buongiorno a tutti, io, sto facendo un progetto di un giochino per scuola, sono alle prime armi e ho riscontrato un problema che spero di risolvere con i vostri consigli.
Ho creato una classe contenente un frame con diversi bottoni etc.
Su questo frame devo poter stampare una lista di pannelli, creata in runtime, non statica. Per creare la lista di pannelli ho utilizzato questo metodo nella mia classe
successivamente li ho stampati nel frame tramite un GridLayout. Fino a qui tutto bene, tutto funziona.codice:public void CreaLista(){ pannelli = new ArrayList<JPanel>(); for (int i = 0; i < 8; i++) { pannelli.add(new JPanel()); pannelli.get(i).setBackground(Color.BLACK); } }
Ora però ho bisogno che questi pannelli, durante la pressione del mouse cambino colore e che quando la pressione del mouse termina ritornino del colore originale. Ho visto che tra gli event handler di un Panel è presente MousePressed e MouseRelased. Ho provato a implementare questi due metodi su un pannello solo e sono riuscito a fargli cambiare colore alla pressione
il problema è che non riesco nella maniera più assoluta ad applicare questi due metodi a ogni singolo pannello contenuto nell'ArrayList. Qualcuno sa aiutarmi? Grazie mille in anticipocodice:JPanel panel = new JPanel(); panel.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { panel.setBackground(Color.RED); } @Override public void mouseReleased(MouseEvent e) { panel.setBackground(Color.YELLOW); } }); panel.setBounds(107, 52, 80, 71); frame.add(panel);

Rispondi quotando
