mirror of
https://github.com/jneug/zeichenmaschine.git
synced 2026-10-12 01:45:18 +02:00
Made access to layers synchronized
This commit is contained in:
@@ -29,10 +29,12 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
|
|
||||||
// Liste der Ebenen initialisieren und die Standardebenen einfügen
|
// Liste der Ebenen initialisieren und die Standardebenen einfügen
|
||||||
layers = new LinkedList<>();
|
layers = new LinkedList<>();
|
||||||
|
synchronized( layers ) {
|
||||||
layers.add(new ColorLayer(Constants.STD_BACKGROUND));
|
layers.add(new ColorLayer(Constants.STD_BACKGROUND));
|
||||||
layers.add(new DrawingLayer());
|
layers.add(new DrawingLayer());
|
||||||
layers.add(new ShapesLayer());
|
layers.add(new ShapesLayer());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.
|
* Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.
|
||||||
@@ -47,10 +49,12 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
this.setPreferredSize(this.getSize());
|
this.setPreferredSize(this.getSize());
|
||||||
this.setMinimumSize(this.getSize());
|
this.setMinimumSize(this.getSize());
|
||||||
|
|
||||||
|
synchronized( layers ) {
|
||||||
for( Layer layer : layers ) {
|
for( Layer layer : layers ) {
|
||||||
layer.setSize(width, height);
|
layer.setSize(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen
|
* Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen
|
||||||
@@ -59,10 +63,12 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
*/
|
*/
|
||||||
public void addLayer( Layer layer ) {
|
public void addLayer( Layer layer ) {
|
||||||
if( layer != null ) {
|
if( layer != null ) {
|
||||||
|
synchronized( layers ) {
|
||||||
layer.setSize(getWidth(), getHeight());
|
layer.setSize(getWidth(), getHeight());
|
||||||
layers.add(layer);
|
layers.add(layer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fügt der Zeichenleinwand eine Ebene an einer bestimmten Stelle hinzu.
|
* Fügt der Zeichenleinwand eine Ebene an einer bestimmten Stelle hinzu.
|
||||||
@@ -71,10 +77,12 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
*/
|
*/
|
||||||
public void addLayer( int i, Layer layer ) {
|
public void addLayer( int i, Layer layer ) {
|
||||||
if( layer != null ) {
|
if( layer != null ) {
|
||||||
|
synchronized( layers ) {
|
||||||
layer.setSize(getWidth(), getHeight());
|
layer.setSize(getWidth(), getHeight());
|
||||||
layers.add(i, layer);
|
layers.add(i, layer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt die Liste der bisher hinzugefügten Ebenen zurück.
|
* Gibt die Liste der bisher hinzugefügten Ebenen zurück.
|
||||||
@@ -140,10 +148,12 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
synchronized( layers ) {
|
||||||
for( Layer layer : layers ) {
|
for( Layer layer : layers ) {
|
||||||
layer.dispose();
|
layer.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void paint( Graphics g ) {
|
public void paint( Graphics g ) {
|
||||||
@@ -163,9 +173,11 @@ public class Zeichenleinwand extends Canvas {
|
|||||||
Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics();
|
Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics();
|
||||||
g2d.clearRect(0, 0, getWidth(), getHeight());
|
g2d.clearRect(0, 0, getWidth(), getHeight());
|
||||||
|
|
||||||
|
synchronized( layers ) {
|
||||||
for( Layer layer : layers ) {
|
for( Layer layer : layers ) {
|
||||||
layer.draw(g2d);
|
layer.draw(g2d);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g2d.dispose();
|
g2d.dispose();
|
||||||
} while( strategy.contentsRestored() );
|
} while( strategy.contentsRestored() );
|
||||||
|
|||||||
Reference in New Issue
Block a user