From 2d216c3109bcc0f89ab784d970e450952304e85f Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 2 Dec 2013 16:55:48 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/LR_5.java | 6 +++-- src/tse/Main.java | 3 ++- src/tse/lr5/CsvReader.java | 36 +++++++++++++++++++++++++----- src/tse/lr5/TrianglePaintable.java | 4 ++-- src/tse/lr5/TrianglesWindow.java | 9 ++++---- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/tse/LR_5.java b/src/tse/LR_5.java index 8c824dd..ae4ca1f 100644 --- a/src/tse/LR_5.java +++ b/src/tse/LR_5.java @@ -1,5 +1,7 @@ package tse; +import tse.lr5.TrianglesWindow; + /** * @author aNNiMON @@ -7,7 +9,7 @@ package tse; public class LR_5 implements ILabRab { private static final String[] TITLES = { - "Чтение объектов из CSV и рисование их на экране", + "Чтение и рисование объектов из CSV", "Движущиеся объекты и их управление" }; @@ -15,7 +17,7 @@ public class LR_5 implements ILabRab { public void execute(int index) { switch(index) { case 0: - // new LoginWindow().setVisible(true); + new TrianglesWindow().execute(); break; case 1: // new DailyPad().setVisible(true); diff --git a/src/tse/Main.java b/src/tse/Main.java index 5292d6b..f9e00db 100644 --- a/src/tse/Main.java +++ b/src/tse/Main.java @@ -45,7 +45,8 @@ public class Main extends JFrame { private final ILabRab[] labs = new ILabRab[] { new LR_1(), new LR_2(), new LR_3(), - new LR_4(), new LR_5(), new Tools() + new LR_4(), new LR_5(), + // new Tools() }; private JButton executeButton; diff --git a/src/tse/lr5/CsvReader.java b/src/tse/lr5/CsvReader.java index d74a50b..02305cd 100644 --- a/src/tse/lr5/CsvReader.java +++ b/src/tse/lr5/CsvReader.java @@ -36,15 +36,15 @@ public class CsvReader { this.handler = handler; } - public List readCsv() throws IOException { - return readCsv(true); + public List readCsvToList() throws IOException { + return readCsvToList(true); } - public List readCsv(boolean skipHeaderLine) throws IOException { - return readCsv(skipHeaderLine, ","); + public List readCsvToList(boolean skipHeaderLine) throws IOException { + return readCsvToList(skipHeaderLine, ","); } - public List readCsv(boolean skipHeaderLine, String separator) throws IOException { + public List readCsvToList(boolean skipHeaderLine, String separator) throws IOException { if (handler == null) throw new RuntimeException("Не установлен ReaderHandler"); handler.onStartRead(file); @@ -72,4 +72,30 @@ public class CsvReader { handler.onFinishRead(file); return list; } + + public void readCsv(boolean skipHeaderLine, String separator) throws IOException { + if (handler == null) throw new RuntimeException("Не установлен ReaderHandler"); + + handler.onStartRead(file); + BufferedReader reader = new BufferedReader( + new InputStreamReader( new FileInputStream(file), "UTF-8" ) + ); + if (skipHeaderLine) { + reader.readLine(); + } + String line; + while ( (line = reader.readLine()) != null ) { + T obj = null; + try { + if (!line.isEmpty()) { + String[] params = line.split(separator); + obj = (T) handler.createObject(params); + } + } catch (RuntimeException ex) { + Util.handleException(ex); + } + } + reader.close(); + handler.onFinishRead(file); + } } diff --git a/src/tse/lr5/TrianglePaintable.java b/src/tse/lr5/TrianglePaintable.java index 168a8e1..655e0a9 100644 --- a/src/tse/lr5/TrianglePaintable.java +++ b/src/tse/lr5/TrianglePaintable.java @@ -10,8 +10,8 @@ import java.awt.Polygon; */ public class TrianglePaintable implements PaintableObject { - private Polygon triangle; - private Color fillColor, strokeColor; + private final Polygon triangle; + private final Color fillColor, strokeColor; public TrianglePaintable(Color fillColor, Color strokeColor, Point p1, Point p2, Point p3) { this.fillColor = fillColor; diff --git a/src/tse/lr5/TrianglesWindow.java b/src/tse/lr5/TrianglesWindow.java index 96bdf14..8489199 100644 --- a/src/tse/lr5/TrianglesWindow.java +++ b/src/tse/lr5/TrianglesWindow.java @@ -17,17 +17,18 @@ public class TrianglesWindow extends JFrame { public TrianglesWindow() { super("Треугольники"); + setAlwaysOnTop(true); setLocationByPlatform(true); setDefaultCloseOperation(HIDE_ON_CLOSE); - panel = new PaintPanel(600, 400); + panel = new PaintPanel(600, 450); add(panel); pack(); } public void execute() { File[] csvFiles = Util.readFiles("lr5", ".csv"); - if (csvFiles == null) { + if (csvFiles == null || csvFiles.length == 0) { JOptionPane.showMessageDialog(this, "CSV-файлов не обнаружено! Сворачиваемся, ребята", "Ошибка", JOptionPane.ERROR_MESSAGE); return; @@ -64,7 +65,7 @@ public class TrianglesWindow extends JFrame { CsvReader csvReader = new CsvReader<>(file); csvReader.setReaderHandler(trianglesHandler); try { - csvReader.readCsv(); + csvReader.readCsv(false, ","); } catch (IOException ex) { Util.handleException(ex); } @@ -90,7 +91,7 @@ public class TrianglesWindow extends JFrame { TrianglePaintable obj = new TrianglePaintable(fill, stroke, p1, p2, p3); panel.addPaintable(obj); try { - Thread.sleep(500); + Thread.sleep(10); } catch (InterruptedException ex) { } return obj; }