Я пытаюсь сделать программу рисования, и у меня есть эта проблема с моим холстом, она очищается при каждом изменении размера или увеличении окна, содержащего его. У меня действительно нет идей, где проблема, методы paint() и repaint() не переопределяются в классе canvas, и я не использую какой-либо аддитер для изменения размера окна. Любая помощь приветствуется.Холст очищается при изменении размера окна
Вот код:
public class Plansa extends Canvas{
Image image;
Pencil pencil;
public Plansa(){
this.setSize(800, 600);
this.setBackground(Color.white);
pencil = new Pencil(this);
addMouseListener(pencil);
addMouseMotionListener(pencil);
}
public Plansa(int width, int height){
this.setBounds(0, 0, width, height);
this.setBackground(Color.white);
pencil = new Pencil(this);
addMouseListener(pencil);
addMouseMotionListener(pencil);
}
public Plansa(Image imag) {
this.setBackground(Color.white);
this.setSize(imag.getWidth(this), imag.getHeight(this));
image = imag;
this.image = imag;
this.repaint();
pencil = new Pencil(this);
addMouseListener(pencil);
addMouseMotionListener(pencil);
}
public Dimension getPreferredSize() {
if(image==null)
return new Dimension(800, 600);
int w = image.getWidth(this);
int h = image.getHeight(this);
return new Dimension(w, h);
}
}
public class Fereastra extends JFrame{
private Plansa plansa;
public Fereastra() {
super("***Painter***") ;
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int) ((dimension.getWidth() - this.getWidth())/2);
int y = (int) ((dimension.getHeight() - this.getHeight())/2);
this.setLocation(0, 0);
this.setSize(dimension);
plansa = new Plansa(this.getWidth(), this.getHeight());
//...
setDefaultCloseOperation(EXIT_ON_CLOSE);
add (plansa, BorderLayout.CENTER) ;
pack();
}
}
Мы понятия не имеем, поэтому обновите свой вопрос с помощью SSCCE. –
'Холст' является частью AWT. Используйте Swing и вместо этого замените JComponent. –
Все ли рисунки сделаны в 'paintComponent'? Если нет, продолжайте читать и прочитайте несколько руководств по рисункам качания. – Mordechai