奇怪的jpanel油漆

时间:2015-12-15 10:46:05

标签: java jpanel paint

这是我的班级

public class Grid extends JPanel{
    public Grid(Dimension dim){
        this.dim = dim;
        step = 0.02;
        this.setSize(dim);
        this.setLocation(0, 0);
    }

    @Override
    public void paint(Graphics g){
        for(int i=-1; i<this.getHeight(); i+=this.getHeight()*step){
            g.drawLine(0, i, this.getWidth(), i);
        }
        for(int i=-1; i<this.getWidth(); i+=this.getWidth()*step){
            g.drawLine(i, 0, i, this.getHeight());
        }
    }
}

(我跳过了类变量的定义)

我将此类添加到另一个JPanel中,如此

Grid grid = new Grid(dim);
parentPanel.add(grid);

默认情况下,网格是隐藏的(grid.hide();)所以我的jFrame看起来像这样: enter image description here

&#34; blue&#34; area是parentPanel和&#34; orange&#34;区域是带按钮的JPanel。问题是,当我按下网格按钮时,我得到以下结果:enter image description here

网格线没问题,但我也得到了这个橙色的盒子,我不知道为什么会这样。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我必须在构造函数

中添加以下行
this.setOpaque(false);