在JPanel上反转颜色

时间:2018-01-05 14:41:33

标签: java swing

我正在尝试使用JPanelJFrame内置的BufferedImage上绘制一个网格线。

到目前为止,我已经使垂直线工作(排序),但我的查询与线条和背景的Color有关。

当我运行应用程序时,JFrameJPanel会出现,但背景的Color为黑色且行为White。好像颜色是倒置的。 (见下图)

JPanel view

我没有在我的Main类中设置任何ColorJPanel的源代码如下 -

public class MyPanel extends JPanel {

    boolean[][] grid;
    BufferedImage image;
    Graphics2D imageG;

    public MyPanel(boolean[][] newGrid) {
        grid = newGrid;
        image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
        imageG = image.createGraphics();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Integer cellWidth = this.getWidth() / grid.length;

        for (Integer i = 0; i < grid.length + 1; i++) {
            imageG.drawLine(i * cellWidth, 0, i * cellWidth, this.getHeight());
        }

        Graphics2D tempg = (Graphics2D) g;
        tempg.fillRect(0, 0, this.getWidth(), this.getHeight());
        //Draw BufferedImage
        tempg.drawImage(image, 0, 0, this);
        //this.getGraphics().drawImage(lineImage, 0, 0, this);
    }
}

1 个答案:

答案 0 :(得分:3)

使用 BufferedImage.TYPE_INT_ARGB ,其中表示将8位RGBA颜色分量打包为整数像素的图像。

以及之前使用 BufferedImage.TYPE_INT_RGB ,其中表示将8位RGB颜色分量打包为整数像素的图像。也缺少 {{ 1}} transparent以及 Colors undefined因此它会说明那些 Colors

从上面纠正了源代码 -

Color.BLACK

希望这对你有所帮助,谢谢。