Allora intanto grazie per la risposta , dopo aver smanettato due ore cerco di mettere quello a cui sono arrivato.
Innanzitutto le JLabel/JButton servirebbero solo come pulsanti per inserire pedine nel campo di gioco,quindi l'unica cosa che mi interessa è poter distinguere su quale colonna il giocatore vuole inserire la pedina.
Per ora ho usato JButton perchè per poterli distinguere uso il metodo get/setActionCommand() che JButton eredita da JAbstractButton mentre JLabel non ha,ma se posso fare altrimenti ben venga,visto che risparmierei il metodo per "pulire" il bottone.
Metto quello a cui sono arrivato:
E per la gestione degli eventi :codice://Qui siamo nella classe di gestione del JFrame metto solo la parte del costruttore del frame interessata pulsanti=new JButton[8]; ................................. Opzioni o=new Opzioni(); for(int i=0;i<8;i++) { JButton b=new JButton(new ImageIcon("img.....")); b.setPreferredSize(new Dimension(50,50)); pulsanti[i]=pulisciBottone(b); pulsanti[i].setActionCommand(""+i); //uso questo metodo per riconoscere i bottoni pulsanti[i].addMouseListener(o); ovest.add(pulsanti[i]); } public static JButton pulisciBottone(JButton b) { b.setFocusPainted(false); b.setMargin(new Insets(0,0,0,0)); b.setContentAreaFilled(false); b.setBorderPainted(false); b.setOpaque(false); return b; }
codice:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Opzioni implements MouseListener { public void mouseClicked(MouseEvent e) { JButton b=(JButton)e.getComponent(); System.out.print("\nMouse cliccato su "+b.getActionCommand()); } public void mouseEntered(MouseEvent e) { JButton b=(JButton)e.getComponent(); System.out.print("\nMouse entrato su "+b.getActionCommand()); } public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mousePressed(MouseEvent e){} }
Immagino che possa fare schifo l'uso di variabili e metodi statici ma sono troppo abituato
Per quanto riguarda la tua ultima parte di risposta parli di "logica applicativa" con flag e altro , mi spiegheresti meglio cosa intendi?


Rispondi quotando