Hi everyone, I have some problems with my mouseListener. I’m developing a card game and I wanted to draw cards when the deck is clicked. Is it possible? Or do I need to make a mouseListener in my Board class, take the coordinates when the mouse was clicked and compare them to the coordinates of the deck?
Here’s the code of my Board class.
public class Board extends JPanel{
public OrderCardsDeck deck;
public Image img;
private JFrame frame;
public Board(JFrame frame){
this.frame = frame;
deck = new OrderCardsDeck();
setFocusable(true);
ImageIcon i = new ImageIcon("images/GtR.jpg");
img = i.getImage();
//help();
}
public void paint(Graphics g){
int width = frame.getWidth();
int height = frame.getHeight();
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(img, 0, 0, width, height, null);
g2d.drawImage((Image) deck.getImage(), 307, 231, null);
g.drawString(""+deck.getCardsAmmount(), 343, 370);
}
//only for help in the construction of the board
public void help(){
this.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
System.out.println(e.getX()+", " + e.getY());
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
}
}
And my OrderCardsDeck code, the class Deck is extending Components
public class OrderCardsDeck extends Decks{
private int cards_amount = 144;
private ArrayList<Cards> cards = new ArrayList<Cards>();
public OrderCardsDeck(){
setImage("images/back_m.jpg");
this.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
cards_amount--;
System.out.println(cards_amount);
repaint();
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
}
public int getCardsAmmount() {
return cards_amount;
}
}