Java 奇怪的jpanel涂料
这是我的班级Java 奇怪的jpanel涂料,java,jpanel,paint,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
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());
}
}
}
默认情况下,网格是隐藏的(grid.hide();
),因此我的jFrame如下所示:
其中“蓝色”区域是parentPanel,“橙色”区域是带有按钮的JPanel。问题是,当我按下网格按钮时,会得到以下结果:
网格线在哪里是可以的,但我也得到了这个橙色的盒子,我不知道为什么会在那里
有什么想法吗?我必须在构造函数中添加以下行
this.setOpaque(false);
我必须在构造函数中添加以下行
this.setOpaque(false);
上面的这些按钮是什么?您确定没有将按钮也添加到面板中吗?我认为您发布的代码太少,无法提供帮助。它们是我程序中的随机按钮,是的,我没有向面板添加任何按钮(忘了提到我还可以添加其他JPanel,可以用鼠标在面板上移动。如果我将其中一个移到奇怪的橙色框上,它会像被擦除一样消失)可能需要在
public void paint(图形g)中调用super.paint()
代码>?当我使用super.paint()
时,它将背景涂成白色,不透明,如果我使用此.setBackground(新颜色(0,0,0,0))代码>出现相同的奇怪框您确定第二个按钮始终存在,但只有在使用透明背景时才可见吗?另外,我认为它比从设计角度调用super.paint()更好。顶部的这些按钮是什么?您确定没有将按钮也添加到面板中吗?我认为您发布的代码太少,无法提供帮助。它们是我程序中的随机按钮,是的,我没有向面板添加任何按钮(忘了提到我还可以添加其他JPanel,可以用鼠标在面板上移动。如果我将其中一个移到奇怪的橙色框上,它会像被擦除一样消失)可能需要在public void paint(图形g)中调用super.paint()
代码>?当我使用super.paint()
时,它将背景涂成白色,不透明,如果我使用此.setBackground(新颜色(0,0,0,0))代码>出现相同的奇怪框您确定第二个按钮始终存在,但只有在使用透明背景时才可见吗?另外,我认为它比从设计角度调用super.paint()更好。