Java的:为什么此JPanel正确绘制?(Java: Why doesn't this J

2019-10-29 05:11发布

我有一个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();

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

Answer 1:

虽然覆盖paint()是不是最糟糕的事情,我强烈建议重写paintComponent()来代替。 此外,您必须调用super.paint() 之前使用做你的绘图Graphics对象,而不是事后。 它只是废料所有工作的方式。

另外,我不知道,如果你这样做或没有,因为你没有在你的代码,但一定要在面板添加到JFrame或任何窗口类,你正在使用,因此实际上将显示出来。 我希望这有帮助。



文章来源: Java: Why doesn't this JPanel paint properly?