I have a 2D array. I want each pixel to be represented by a total of four in the actual image. I've tried various piece of code but none seem to work and I don't really understand how it works either.
So far I have:
panel = new JPanel() {
@Override
public void paint(Graphics g) {
Rectangle rect = g.getClipBounds();
g.setColor(Color.white);
g.fillRect(rect.x, rect.y, rect.width, rect.height);
for (int i = 0; i < m.width(); i++) {
for (int j=0; j < m.height(); j++) {
g.setColor(Color.red);
g.fillRect(j*4, i*4, 4, 4);
}
}
super.paint(g);
}
};
panel.repaint();
Where am I going wrong? The area stays completely grey with no colour!
While overriding
paint()
is not the worst thing to do, I highly recommend overridingpaintComponent()
instead. Also, you must callsuper.paint()
prior to doing your drawing using theGraphics
object, not afterwards. It just scraps all of your work that way.Also, I don't know if you did this or not, since you don't have it in your code, but make sure to add the panel to the
JFrame
or whatever window class you are using so it will actually show up. I hope this helps.