Я разрабатываю приложение для рисования с графическим интерфейсом.Но проблема в том, что содержимое кадра стирается при минимизации, а затем максимизации.Я знаю, в чем проблема, это то, что краска вызывается снова после максимизации, а содержимое кадра обрабатывается неправильно.Но я не смог решить поведение, даже узнав об ошибке.
Вот основной код, ответственный за это поведение:
public void paint(Graphics g) {
/*From minimized to maximized*/
System.err.println("Inside paint now ");
try{
if(color==colour.red)
g.setColor(Color.red);
else if(color==colour.green)
g.setColor(Color.green);
else if(color==colour.pink)
g.setColor(Color.PINK);
else if(color==colour.cyan)
g.setColor(Color.CYAN);
else if(color==colour.magenta)
g.setColor(Color.MAGENTA);
else if(color==colour.orange)
g.setColor(Color.ORANGE);
else if(color==colour.white)
g.setColor(Color.white);
else if(color==colour.black)
g.setColor(Color.BLACK);
else if(color==colour.yellow)
{
g.setColor(Color.YELLOW);
System.out.println("Colour selected ");
}
else if(stat==state.line)
{
Point p=getMousePosition();
x=p.x;y=p.y;
System.out.append("In here ");
System.out.append("the point is "+x+" "+y);
if(prevx==0 && prevy==0)
{
g.drawLine(x, y, x, y);
// System.out.append("the point is "+x+" "+y);
}
else
g.drawLine(x, y, prevx, prevy);
prevx=x;
prevy=y;
System.out.println("Line selected ");
}
else if(stat==state.rectangle)
{
if(x<prevx)
{
x=x+prevx;
prevx=x-prevx;
x=x-prevx;
}
if(y<prevy)
{
y=y+prevy;
prevy=y-prevy;
y=y-prevy;
}
g.drawRect(prevx,prevy,x-prevx,y-prevy);
System.out.println("Rectangle selected ");
}
else if(stat==state.circle)
{
if(x<prevx)
{
x=x+prevx;
prevx=x-prevx;
x=x-prevx;
}
if(y<prevy)
{
y=y+prevy;
prevy=y-prevy;
y=y-prevy;
}
g.drawOval(prevx,prevy,x-prevx,y-prevy);
System.out.println("Circle selected ");
}
else if(stat==state.ruler)
{
g.drawLine(x, y, prevx, prevy);
System.out.println("Ruler selected ");
}
else if(stat==state.eraser)
{
g.setColor(getBackground());
g.fillRect(x-10, y-10, 20, 20);
System.out.println("Eraser selected ");
}
else
{
System.out.append("nothing done");
}
}
catch(Exception e)
{
}
}