Java Reference
In-Depth Information
public SimplePaintPanel() {
this(5, new HashSet<Point>());
}
public SimplePaintPanel(Set<Point> blackPixels) {
this(5, blackPixels);
}
public SimplePaintPanel(int brushSize, Set<Point> blackPixels) {
this.setPreferredSize(new Dimension(300, 300));
this.brushSize = brushSize;
this.blackPixels.addAll(blackPixels);
final SimplePaintPanel self = this;
MouseAdapter mouseAdapter = new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent ev) {
if (self.mouseButtonDown == 1)
self.blackPixels.addAll(getPixelsAround(ev.getPoint()));
else if (self.mouseButtonDown == 3)
self.blackPixels.removeAll(getPixelsAround(ev.getPoint()));
self.invalidate();
self.repaint();
}
@Override
public void mousePressed(MouseEvent ev) {
self.mouseButtonDown = ev.getButton();
}
};
this.addMouseMotionListener(mouseAdapter);
this.addMouseListener(mouseAdapter);
}
public void paint(Graphics g) {
int w = this.getWidth();
int h = this.getHeight();
g.setColor(Color.white);
g.fillRect(0, 0, w, h);
g.setColor(Color.black);
for (Point point : blackPixels)
g.drawRect(point.x, point.y, 1, 1);
}
private Collection<? extends Point> getPixelsAround(Point point) {
Set<Point> points = new HashSet<>();
for (int x = point.x - brushSize; x < point.x + brushSize; x++)
for (int y = point.y - brushSize; y < point.y + brushSize; y++)
points.add(new Point(x, y));
return points;
}
4.
Next, add this custom component to your JFrame :
import java.awt.event.ActionEvent;
Search WWH ::




Custom Search