1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CarresBlancsEtNoirs extends JPanel {
private final int largeurCarre;
private final int nbCarresLargeur;
private final int nbCarresHauteur;
private final Set<Point> etats;
private final Dimension size;
public CarresBlancsEtNoirs(int largeurCarre, int nbCarresLargeur, int nbCarresHauteur) {
this.largeurCarre=largeurCarre;
this.nbCarresHauteur=nbCarresHauteur;
this.nbCarresLargeur=nbCarresLargeur;
this.size=new Dimension(largeurCarre*nbCarresLargeur,largeurCarre*nbCarresHauteur);
this.etats=new HashSet<>();
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX()/largeurCarre;
int y = e.getY()/largeurCarre;
boolean modify;
if ( e.getButton()==MouseEvent.BUTTON1 ) {
modify = etats.add(new Point(x,y));
}
else {
modify = etats.remove(new Point(x,y));
}
if ( modify ) {
repaint();
}
}
});
}
public void setPoint(int i) {
setPoint(i/nbCarresLargeur, i%nbCarresLargeur);
}
public void setPoint(int x, int y) {
if( x>=0 && x<nbCarresLargeur && y>=0 && y<nbCarresHauteur ) {
etats.add(new Point(x,y));
repaint();
}
}
public void resetPoint(int i) {
resetPoint(i/nbCarresLargeur, i%nbCarresLargeur);
}
public void resetPoint(int x, int y) {
if( x>=0 && x<nbCarresLargeur && y>=0 && y<nbCarresHauteur ) {
etats.remove(new Point(x,y));
repaint();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(getForeground());
for(Point etat : etats) {
g.fillRect(etat.x*largeurCarre, etat.y*largeurCarre, largeurCarre, largeurCarre);
}
}
@Override
public Dimension getPreferredSize() {
return size;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CarresBlancsEtNoirs carresBlancsEtNoirs = new CarresBlancsEtNoirs(14, 50, 50);
carresBlancsEtNoirs.setBackground(Color.WHITE); // couleur de fond
carresBlancsEtNoirs.setForeground(Color.BLACK); // couleur de dessin
frame.add(carresBlancsEtNoirs);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
} |
Partager