diff --git a/src/main/java/ru/egspt/App.java b/src/main/java/ru/egspt/App.java index e18ef9e..90fdd77 100644 --- a/src/main/java/ru/egspt/App.java +++ b/src/main/java/ru/egspt/App.java @@ -83,4 +83,4 @@ public class App extends JPanel{ } -} +} \ No newline at end of file diff --git a/src/main/java/ru/egspt/ReportPane.java b/src/main/java/ru/egspt/ReportPane.java index 4a263f1..20634eb 100644 --- a/src/main/java/ru/egspt/ReportPane.java +++ b/src/main/java/ru/egspt/ReportPane.java @@ -8,6 +8,7 @@ import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.LineBorder; import javax.swing.border.TitledBorder; +import javax.swing.table.DefaultTableModel; public class ReportPane extends JPanel { private JPanel reportTablePane = new JPanel(); @@ -50,6 +51,71 @@ public class ReportPane extends JPanel { public void setReportData(Data data){ getReportTableModel().setData(data); } + public void setReportHeader(Data report){ + //настройка заголовков таблицы + System.out.println("настраиваем отображение заголовков таблицы отчетов ... "); + reportTableModel = new ReportTableModel(report); + System.out.println("reportTableModel.getColumnCount(): " + reportTableModel.getColumnCount()); + System.out.println("reportTableModel.getHeader().length: " + reportTableModel.getHeader().length); + reportTable = new JTable(reportTableModel); + System.out.println("reportTable.getColumnModel().getColumnCount(): " + reportTable.getColumnModel().getColumnCount()); + int j = 0; + while (j < getReportTableModel().getHeader().length){ + getReportTable().getColumnModel().getColumn(j).setHeaderValue(getReportTableModel().getHeader()[j]); + System.out.println(j + " Заголовок модели: " + getReportTableModel().getHeader()[j]); + System.out.println("Заголовок таблицы: " + getReportTable().getColumnName(j)); + j++; + } + //getReportTableModel().fireTableStructureChanged(); + //getReportTableModel().fireTableDataChanged(); + } + /** + * формирование таблицы с новым отчетом + * обработка заголовков таблицы и данных в одном методе, + * замещаем методы: + * setReportHeader() + * setReportData() + * setReportContent() + * + * @param report + */ + public void updateReport(Data report){ + //подготовка новой модели данных для отображения в таблице + System.out.println("подготовка новой модели данных для отображения в таблице отчета ... "); + setReportTableModel(new ReportTableModel(report)); + DefaultTableModel dm = new DefaultTableModel(getReportTableModel().getData(), getReportTableModel().getHeader()); + getReportTable().setModel(dm); + + //отображение в таблице отчета по тегу + //System.out.println("отображение в таблице отчета по тегу " + " ... "); + //setReportTable(new JTable(getReportTableModel())); + getReportTable().revalidate(); + //отображение заголовков таблицы + /* + int j = 0; + while (j < getReportTableModel().getHeader().length){ + getReportTable().getColumnModel().getColumn(j).setHeaderValue(getReportTableModel().getHeader()[j]); + j++; + } + */ + //getReportTableModel().toConsole(); + putTableToConsole(getReportTable()); + getReportTableModel().fireTableDataChanged();//оповещаем об изменении данных + getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!! + + + + } + public void setReportContent(Data report){ + //устанавливаем заголовки + setReportHeader(report); + //устанавливаем данные + setReportData(report); + getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!! + getReportTableModel().fireTableDataChanged();//оповещаем об изменении данных + //getReportTable().repaint(); + + } public void setupReportTextPane(){} public void setupReportSettingsPane(){} /** @@ -58,5 +124,45 @@ public class ReportPane extends JPanel { public ReportTableModel getReportTableModel() { return reportTableModel; } + /** + * @param reportTableModel the reportTableModel to set + */ + public void setReportTableModel(ReportTableModel reportTableModel) { + this.reportTableModel = reportTableModel; + } + /** + * @param reportTable the reportTable to set + */ + public void setReportTable(JTable reportTable) { + this.reportTable = reportTable; + } + /** + * @return the reportTable + */ + public JTable getReportTable() { + return reportTable; + } + public void putTableToConsole(JTable table){ + //Данные таблицы в консоль + //table.getModel(); + //заголовки + int i = 0; + while (i < table.getModel().getColumnCount()){ + System.out.print(table.getModel().getColumnName(i) + " "); + i++; + } + System.out.println(); + //данные + i = 0; + while (i < table.getModel().getRowCount()){ + int j = 0; + while (j < table.getModel().getColumnCount()){ + System.out.print(table.getModel().getValueAt(i, j) + " "); + j++; + } + System.out.println(); + i++; + } + } } diff --git a/src/main/java/ru/egspt/ReportTableModel.java b/src/main/java/ru/egspt/ReportTableModel.java index 0ec51b0..fc999f2 100644 --- a/src/main/java/ru/egspt/ReportTableModel.java +++ b/src/main/java/ru/egspt/ReportTableModel.java @@ -3,6 +3,7 @@ package ru.egspt; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableModel; public class ReportTableModel extends AbstractTableModel{ private Object[] header; @@ -42,7 +43,6 @@ public class ReportTableModel extends AbstractTableModel{ */ public void setHeader(Object[] header) { this.header = header; - fireTableDataChanged(); } /** * Настройка заголовков отчета @@ -64,11 +64,17 @@ public class ReportTableModel extends AbstractTableModel{ int i = 0; while (i < report.getQuizes().size()){ header.add(report.getQuizes().get(i).getName()); - //System.out.println("Пишем заголовок: " + report.getQuizes().get(i).getName()); header.add(""); i++; } - return header.toArray(); + //преобразуем список в массив + Object[] h = new Object[header.size()]; + int j = 0; + while (j < header.size()){ + h[j] = header.get(j); + j++; + } + return h; } /** * @return the header @@ -88,8 +94,6 @@ public class ReportTableModel extends AbstractTableModel{ public void setData(Data report) { //создаем объект data - инициализация переменной Object[][] d = new Object[report.getUsers().size()][3 + 2*report.getQuizes().size()]; - System.out.println("Количество столбцов Object[][] d: " + (3 + 2*report.getQuizes().size())); - System.out.println("Количество строк Object[][] d: " + report.getUsers().size()); //построчно заполняем модель отчета данными int userCurr = 0; while (userCurr < report.getUsers().size()){ @@ -102,7 +106,6 @@ public class ReportTableModel extends AbstractTableModel{ //перебираем остальные заголовки (перечень опросов) int quizCurr = 0; while (quizCurr < report.getQuizes().size()){ - if (find == false){ //перебираем результаты, ищем результаты по текущему опросу int resultCurr = 0; @@ -120,25 +123,22 @@ public class ReportTableModel extends AbstractTableModel{ } } else{ - string.add(""); - string.add(""); + string.add(" "); + string.add(" "); find = false; } - + find = false; quizCurr++; } //пишем строку в d int j = 0; while (j < string.size()){ - //while (j < 3){ d[userCurr][j] = string.toArray()[j]; j++; } - userCurr++; } - this.data = d; - fireTableDataChanged(); + setData(d); } /** * @return the data @@ -146,4 +146,26 @@ public class ReportTableModel extends AbstractTableModel{ public Object[][] getData() { return data; } + public void toConsole(){ + //заголовки + int i = 0; + while (i < getHeader().length){ + System.out.print(getHeader()[i] + " "); + i++; + } + System.out.println(); + //данные + i = 0; + while (i < getData().length){ + int j = 0; + while (j < getData()[i].length){ + System.out.print(getData()[i][j] + " "); + j++; + } + System.out.println(); + i++; + } + System.out.println(getHeader().toString()); + + } } diff --git a/src/main/java/ru/egspt/TagControls.java b/src/main/java/ru/egspt/TagControls.java index d10f81a..e6de355 100644 --- a/src/main/java/ru/egspt/TagControls.java +++ b/src/main/java/ru/egspt/TagControls.java @@ -1,5 +1,7 @@ package ru.egspt; +import java.util.ArrayList; + public class TagControls { //добавляем тег в модель public static void addTag(App app){ @@ -7,21 +9,17 @@ public class TagControls { app.getTagModel().addTag(app.getTagPane().getCurrentTag()); //обновляем текстовую область app.getTagPane().updateTagArea(app.getTagModel()); + //теги в консоль + System.out.println("добавлен новый тег: " + app.getTagPane().getCurrentTag()); app.getTagPane().getCurrentTagField().setText(""); //Подготавливаем данные для отчета (перебор данных по тегам) Data report = new Data(); report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers())); report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); - //формирование заголовков таблицы отчета - app.getReportPane().getReportTableModel().setHeader(app.getReportPane().getReportTableModel().getHeaderByQuize(report)); - //формирование данных в таблице - app.getReportPane().getReportTableModel().setData(report); - //app.getReportPane().setupReportTablePane(report); - //app.getReportPane() - app.getReportPane().getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!! - app.getReportPane().getReportTableModel().fireTableDataChanged(); - + //формирование таблицы отчетов + app.getReportPane().updateReport(report); + //app.getReportPane().setReportContent(report); } //удаляем тег из модели @@ -33,12 +31,11 @@ public class TagControls { //tp.getTagArea().update(tp.getTagArea().getGraphics()); app.getTagPane().getCurrentTagField().setText(""); //Выводим пользователей в отчет - Data data = new Data(); - data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); - //app.getDataPane().setUsers(data); - //app.getDataPane().getUsersTableModel().fireTableDataChanged(); - app.getReportPane().setReportData(data); - //app.getReportPane().setupReportTablePane(app); - app.getReportPane().getReportTableModel().fireTableDataChanged(); + Data report = new Data(); + report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); + report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers())); + report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); + //формирование таблицы отчетов + app.getReportPane().updateReport(report); } } diff --git a/target/classes/ru/egspt/ReportPane.class b/target/classes/ru/egspt/ReportPane.class index 9cd003d..092563d 100644 Binary files a/target/classes/ru/egspt/ReportPane.class and b/target/classes/ru/egspt/ReportPane.class differ diff --git a/target/classes/ru/egspt/ReportTableModel.class b/target/classes/ru/egspt/ReportTableModel.class index b103b04..59d532e 100644 Binary files a/target/classes/ru/egspt/ReportTableModel.class and b/target/classes/ru/egspt/ReportTableModel.class differ diff --git a/target/classes/ru/egspt/TagControls.class b/target/classes/ru/egspt/TagControls.class index 3a000aa..aa297a8 100644 Binary files a/target/classes/ru/egspt/TagControls.class and b/target/classes/ru/egspt/TagControls.class differ