Browse Source

report-таблички отображаются нормально

master
esoe 2 years ago
parent
commit
430487ee63
  1. 2
      src/main/java/ru/egspt/App.java
  2. 106
      src/main/java/ru/egspt/ReportPane.java
  3. 48
      src/main/java/ru/egspt/ReportTableModel.java
  4. 29
      src/main/java/ru/egspt/TagControls.java
  5. BIN
      target/classes/ru/egspt/ReportPane.class
  6. BIN
      target/classes/ru/egspt/ReportTableModel.class
  7. BIN
      target/classes/ru/egspt/TagControls.class

2
src/main/java/ru/egspt/App.java

@ -83,4 +83,4 @@ public class App extends JPanel{
} }
} }

106
src/main/java/ru/egspt/ReportPane.java

@ -8,6 +8,7 @@ import javax.swing.JScrollPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.border.LineBorder; import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
public class ReportPane extends JPanel { public class ReportPane extends JPanel {
private JPanel reportTablePane = new JPanel(); private JPanel reportTablePane = new JPanel();
@ -50,6 +51,71 @@ public class ReportPane extends JPanel {
public void setReportData(Data data){ public void setReportData(Data data){
getReportTableModel().setData(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 setupReportTextPane(){}
public void setupReportSettingsPane(){} public void setupReportSettingsPane(){}
/** /**
@ -58,5 +124,45 @@ public class ReportPane extends JPanel {
public ReportTableModel getReportTableModel() { public ReportTableModel getReportTableModel() {
return reportTableModel; 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++;
}
}
} }

48
src/main/java/ru/egspt/ReportTableModel.java

@ -3,6 +3,7 @@ package ru.egspt;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.table.AbstractTableModel; import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class ReportTableModel extends AbstractTableModel{ public class ReportTableModel extends AbstractTableModel{
private Object[] header; private Object[] header;
@ -42,7 +43,6 @@ public class ReportTableModel extends AbstractTableModel{
*/ */
public void setHeader(Object[] header) { public void setHeader(Object[] header) {
this.header = header; this.header = header;
fireTableDataChanged();
} }
/** /**
* Настройка заголовков отчета * Настройка заголовков отчета
@ -64,11 +64,17 @@ public class ReportTableModel extends AbstractTableModel{
int i = 0; int i = 0;
while (i < report.getQuizes().size()){ while (i < report.getQuizes().size()){
header.add(report.getQuizes().get(i).getName()); header.add(report.getQuizes().get(i).getName());
//System.out.println("Пишем заголовок: " + report.getQuizes().get(i).getName());
header.add(""); header.add("");
i++; 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 * @return the header
@ -88,8 +94,6 @@ public class ReportTableModel extends AbstractTableModel{
public void setData(Data report) { public void setData(Data report) {
//создаем объект data - инициализация переменной //создаем объект data - инициализация переменной
Object[][] d = new Object[report.getUsers().size()][3 + 2*report.getQuizes().size()]; 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; int userCurr = 0;
while (userCurr < report.getUsers().size()){ while (userCurr < report.getUsers().size()){
@ -102,7 +106,6 @@ public class ReportTableModel extends AbstractTableModel{
//перебираем остальные заголовки (перечень опросов) //перебираем остальные заголовки (перечень опросов)
int quizCurr = 0; int quizCurr = 0;
while (quizCurr < report.getQuizes().size()){ while (quizCurr < report.getQuizes().size()){
if (find == false){ if (find == false){
//перебираем результаты, ищем результаты по текущему опросу //перебираем результаты, ищем результаты по текущему опросу
int resultCurr = 0; int resultCurr = 0;
@ -120,25 +123,22 @@ public class ReportTableModel extends AbstractTableModel{
} }
} }
else{ else{
string.add(""); string.add(" ");
string.add(""); string.add(" ");
find = false; find = false;
} }
find = false;
quizCurr++; quizCurr++;
} }
//пишем строку в d //пишем строку в d
int j = 0; int j = 0;
while (j < string.size()){ while (j < string.size()){
//while (j < 3){
d[userCurr][j] = string.toArray()[j]; d[userCurr][j] = string.toArray()[j];
j++; j++;
} }
userCurr++; userCurr++;
} }
this.data = d; setData(d);
fireTableDataChanged();
} }
/** /**
* @return the data * @return the data
@ -146,4 +146,26 @@ public class ReportTableModel extends AbstractTableModel{
public Object[][] getData() { public Object[][] getData() {
return data; 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());
}
} }

29
src/main/java/ru/egspt/TagControls.java

@ -1,5 +1,7 @@
package ru.egspt; package ru.egspt;
import java.util.ArrayList;
public class TagControls { public class TagControls {
//добавляем тег в модель //добавляем тег в модель
public static void addTag(App app){ public static void addTag(App app){
@ -7,21 +9,17 @@ public class TagControls {
app.getTagModel().addTag(app.getTagPane().getCurrentTag()); app.getTagModel().addTag(app.getTagPane().getCurrentTag());
//обновляем текстовую область //обновляем текстовую область
app.getTagPane().updateTagArea(app.getTagModel()); app.getTagPane().updateTagArea(app.getTagModel());
//теги в консоль
System.out.println("добавлен новый тег: " + app.getTagPane().getCurrentTag());
app.getTagPane().getCurrentTagField().setText(""); app.getTagPane().getCurrentTagField().setText("");
//Подготавливаем данные для отчета (перебор данных по тегам) //Подготавливаем данные для отчета (перебор данных по тегам)
Data report = new Data(); Data report = new Data();
report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers())); report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers()));
report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults()));
//формирование заголовков таблицы отчета //формирование таблицы отчетов
app.getReportPane().getReportTableModel().setHeader(app.getReportPane().getReportTableModel().getHeaderByQuize(report)); app.getReportPane().updateReport(report);
//формирование данных в таблице //app.getReportPane().setReportContent(report);
app.getReportPane().getReportTableModel().setData(report);
//app.getReportPane().setupReportTablePane(report);
//app.getReportPane()
app.getReportPane().getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!!
app.getReportPane().getReportTableModel().fireTableDataChanged();
} }
//удаляем тег из модели //удаляем тег из модели
@ -33,12 +31,11 @@ public class TagControls {
//tp.getTagArea().update(tp.getTagArea().getGraphics()); //tp.getTagArea().update(tp.getTagArea().getGraphics());
app.getTagPane().getCurrentTagField().setText(""); app.getTagPane().getCurrentTagField().setText("");
//Выводим пользователей в отчет //Выводим пользователей в отчет
Data data = new Data(); Data report = new Data();
data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
//app.getDataPane().setUsers(data); report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers()));
//app.getDataPane().getUsersTableModel().fireTableDataChanged(); report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults()));
app.getReportPane().setReportData(data); //формирование таблицы отчетов
//app.getReportPane().setupReportTablePane(app); app.getReportPane().updateReport(report);
app.getReportPane().getReportTableModel().fireTableDataChanged();
} }
} }

BIN
target/classes/ru/egspt/ReportPane.class

Binary file not shown.

BIN
target/classes/ru/egspt/ReportTableModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/TagControls.class

Binary file not shown.
Loading…
Cancel
Save