Java:为什么这个JPanel不能正确绘制?

时间:2013-08-04 02:23:49

标签: graphics jpanel multidimensional-array graphics2d repaint

我有一个2D数组。我希望每个像素在实际图像中总共由四个像素表示。我已经尝试了各种代码,但似乎都没有用,我也不太明白它是如何工作的。

到目前为止,我有:

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();

我哪里错了?该区域保持完全灰色,没有颜色!

1 个答案:

答案 0 :(得分:0)

虽然覆盖paint()并不是最糟糕的事情,但强烈建议改为覆盖paintComponent()。此外,您必须先使用super.paint()对象调用Graphics 之前进行绘图,而不是之后。它只是以这种方式废弃你的所有工作。

此外,我不知道你是否这样做,因为你的代码中没有它,但确保将面板添加到JFrame或你正在使用的任何窗口类中它实际上会出现。我希望这会有所帮助。