В моем графическом интерфейсе, который я создал на Java, каждый раз, когда я минимизирую окно, вызывается перекраска, и чертеж, который был там, исчезает после того, как окно развернуто (обратно в нормальное состояние)
Итак, я создал слушатель действия, чтобы определить, когда окно было свернуто, а затем развернуто, чтобы оно рисовало каждую точку, которая была первоначально на панели, обратно на экран.
К сожалению, я не получаю ожидаемых результатов.
По какой-то причине, когда окно развернуто, каждая точка отрисовывается на панели, но фон всего окна черный. Кроме того, это может очень раздражать, когда пользователю приходится ждать, пока каждая точка будет отображаться на экране каждый раз, когда он хочет свернуть окно.
Вот что у меня есть:
//Redraw plot if window is minimized
window.addWindowStateListener(new WindowAdapter()
{
Graphics g = dPanel.getGraphics();
public void windowStateChanged(WindowEvent ev)
{
boolean minimized = false;
//If user minimizes window and then maximizes window
if(window.getExtendedState() == Frame.ICONIFIED )
{
minimized = true;
System.out.println("Window minimized");
}
if(ev.getNewState() == Frame.NORMAL || minimized == true)
{
System.out.println("Window back to normal state");
//Draw each Point back onto the screen
for(Point i: PointArray)
{
drawPoint(g, i, startColor);
System.out.println("Panel Repaint");
}
}
}
});
}
Есть ли способ, которым мой код может быть отредактирован для достижения желаемых результатов, или есть лучший способ сделать это. По сути, я просто хочу, чтобы, когда пользователь свернул GUI, рисунок, который был там до минимизации, все еще там, когда пользователь развернет окно до максимума. Кроме того, перемещение окна может также привести к перекрашиванию частей панели или перекрашиванию всей панели.
//Draws point onto panel
public void drawPoint(Graphics g, Point PointArray, Color color)
{
Graphics2D g2d = (Graphics2D)g;
g2d.setStroke(new BasicStroke(2f));
g.setColor(color); //g2d.setColor(Color.black);
g2d.drawOval((int)PointArray.a, (int)PointArray.b, 2, 2);
}