这学期的图形学作业,用DDA和Bresenham画线,我在JFrame上放置了个JPanel,然后自己写了个LinePanel的类,继承自JPanel,在LinePanel的实例上画线。在用于清除线的JBotton的MouseClicked事件里不管我写linepanel.repaint();还是Jpanel.repaint();都没办法正确的让linepanel里的东西清楚,第一次会让它的底色变白,第二次开始它的左上角还会出现我的几个按钮和Label搞不懂为什么了。。望大侠告知!public class LinePanel extends JPanel{
/** Creates a new instance of LinePanel */
//public LinePanel() {
//}
public void paint(Graphics g){
int i;
int width=this.getWidth();
int height=this.getHeight();
g.drawLine(10,height/2-1,width-10,height/2-1);
g.drawLine(width/2+1,10,width/2+1,height-10);
for(i=width/2; i>0; i-=20){
g.drawString(".",i,height/2-1);
}
for(i=width/2; i<width; i+=20){
g.drawString(".",i,height/2-1);
}
for(i=height/2; i>0; i-=20){
g.drawString(".",width/2+1,i);
}
for(i=height/2; i<height; i+=20){
g.drawString(".",width/2+1,i);
}
g.drawString(">",width-15,height/2+4);
g.drawString("^",width/2-1,18);
}
public void WritePixel(int x,int y){
Graphics g=this.getGraphics();
g.translate(this.getWidth()/2,this.getHeight()/2);
g.drawString(".",x,y);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LinePanel().setVisible(true);
}
});
}
}
/** Creates a new instance of LinePanel */
//public LinePanel() {
//}
public void paint(Graphics g){
int i;
int width=this.getWidth();
int height=this.getHeight();
g.drawLine(10,height/2-1,width-10,height/2-1);
g.drawLine(width/2+1,10,width/2+1,height-10);
for(i=width/2; i>0; i-=20){
g.drawString(".",i,height/2-1);
}
for(i=width/2; i<width; i+=20){
g.drawString(".",i,height/2-1);
}
for(i=height/2; i>0; i-=20){
g.drawString(".",width/2+1,i);
}
for(i=height/2; i<height; i+=20){
g.drawString(".",width/2+1,i);
}
g.drawString(">",width-15,height/2+4);
g.drawString("^",width/2-1,18);
}
public void WritePixel(int x,int y){
Graphics g=this.getGraphics();
g.translate(this.getWidth()/2,this.getHeight()/2);
g.drawString(".",x,y);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LinePanel().setVisible(true);
}
});
}
}
你的清除button呢?