Целью здесь является то, что я могу щелкнуть по цвету и форме, а затем по двум точкам на фигурахPanel. Эта цветная фигура заполняется на фигурахPanel, и я могу добавлять фигуры друг на друга и т. Д. Мне также нужна текущая дата, которая будет отображаться в углу фигурыPanel, поверх всех окрашенных фигур. Я могу создавать фигуры (хотя они всегда охватывают дату) не проблема, но всякий раз, когда я изменяю размер или сворачиваю окно, все окрашенные фигуры исчезают. Я попытался реализовать довольно много разных методов из Graphics (обновление, краска, перерисовка и т. Д.) И не нашел того, что исправляет эту проблему. Я думал, что paintComponent() позаботится обо всем этом, но, по-видимому, нет. Не стесняйтесь указывать на все, что может быть реализовано лучше, всегда рады узнать что-то новое.Рисованная графика мерцает, а затем исчезает при изменении размера окна.
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
drawFigures();
figuresPanel.add(dateLabel, c);
}
@Override
public Dimension getPreferredSize() {
return (new Dimension(800, 600));
}
private void addFigure(Figure figure) {
figureList.add(figure);
listArea.append(figure.toString() + "\n");
figure.fill(getGraphics());
}
private void drawFigures() {
for (Figure f : figureList) {
f.fill(getGraphics());
}
}
'getGraphics()' - плохая идея. Посмотрите на [Живопись в AWT и Swing] (http://www.oracle.com/technetwork/java/painting-140037.html) и [Выполнение пользовательской живописи] (http://docs.oracle.com/javase/tutorial/uiswing/painting /) для более подробной информации о том, как работает живопись в Swing. – MadProgrammer