From 7e6895bfaba6dcb9c9b08279b39df84451500838 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 2 Dec 2013 19:23:32 +0200 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D1=8C=20=D1=80?= =?UTF-8?q?=D0=B8=D1=81=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=202=20?= =?UTF-8?q?=D0=9B=D0=A05?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/lr5/PaintPanel.java | 2 +- src/tse/lr5/PaintPanelTask2.java | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/tse/lr5/PaintPanelTask2.java diff --git a/src/tse/lr5/PaintPanel.java b/src/tse/lr5/PaintPanel.java index fa9c1ec..c57b4f9 100644 --- a/src/tse/lr5/PaintPanel.java +++ b/src/tse/lr5/PaintPanel.java @@ -15,7 +15,7 @@ import javax.swing.SwingUtilities; */ public class PaintPanel extends JPanel { - private final List paintables; + protected final List paintables; public PaintPanel(int width, int height) { paintables = Collections.synchronizedList(new ArrayList()); diff --git a/src/tse/lr5/PaintPanelTask2.java b/src/tse/lr5/PaintPanelTask2.java new file mode 100644 index 0000000..eb5f69a --- /dev/null +++ b/src/tse/lr5/PaintPanelTask2.java @@ -0,0 +1,53 @@ +package tse.lr5; + +import java.awt.Graphics; +import tse.Util; + +/** + * Панель рисования. + * @author aNNiMON + */ +public class PaintPanelTask2 extends PaintPanel implements Runnable { + + public PaintPanelTask2(int width, int height) { + super(width, height); + } + + public void startRepainterThread() { + new Thread(this).start(); + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + } + + @Override + public void run() { + while (true) { + synchronized (paintables) { + for (PaintableObject p1 : paintables) { + FileIconPaintable f1 = (FileIconPaintable) p1; + checkCollide(f1); + } + } + repaint(); + try { + Thread.sleep(100); + } catch (InterruptedException ex) { + Util.handleException(ex); + } + } + } + + private void checkCollide(FileIconPaintable f1) { + for (PaintableObject p2 : paintables) { + if (f1.equals(p2)) continue; + FileIconPaintable f2 = (FileIconPaintable) p2; + if (f1.isCollide(f2)) { + f1.changeRotateDirection(); + return; + } + } + } +}