【问题标题】:Java: Why doesn't this JPanel paint properly?Java:为什么这个 JPanel 不能正确绘制?
【发布时间】:2013-08-04 02:23:49
【问题描述】:

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

到目前为止我有:

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

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

【问题讨论】:

    标签: graphics jpanel multidimensional-array graphics2d repaint


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 2020-07-09
      • 2012-06-15
      • 2015-01-25
      相关资源
      最近更新 更多