powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / [JavaFX] Как вставить много значений во много столбцов (Календарный месяц)
1 сообщений из 1, страница 1 из 1
[JavaFX] Как вставить много значений во много столбцов (Календарный месяц)
    #39993975
Виктор Бут
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу скажу что с таблицами уже был успешный опыт например вот класс работника:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
package model;

import javafx.beans.property.*;

public class Employee {
	
	private IntegerProperty id;
	private StringProperty name;
	private StringProperty job;
	
	public Employee(){
        this.id = new SimpleIntegerProperty();
        this.name = new SimpleStringProperty();
        this.job = new SimpleStringProperty();
    }
	
	public void setId(Integer id) {
		this.id.setValue(id);
	}
	public int getId() {
		return this.id.get();
	}
	public IntegerProperty getIdProperty() {
		return this.id;
	}
	
	
	public void setName(String name) {
		this.name.setValue(name);
	}
	public String getName() {
		return this.name.get();
	}
	public StringProperty getNameProperty() {
		return this.name;
	}
	
	
	public void setJob(String job) {
		this.job.setValue(job);
	}
	public String getJob() {
		return this.job.get();
	}
	public StringProperty getJobProperty() {
		return this.job;
	}
}




а вот код, который отлично инициализирует таблицу:
Код: java
1.
2.
3.
4.
5.
6.
7.
private void initEmployeeTable(final int department_id) throws ClassNotFoundException, SQLException {
		employeeIdColumn.setCellValueFactory(cellData -> cellData.getValue().getIdProperty().asObject());
		employeeNameColumn.setCellValueFactory(cellData -> cellData.getValue().getNameProperty());
		employeeJobColumn.setCellValueFactory(cellData -> cellData.getValue().getJobProperty());
		ObservableList<Employee> employeesList = EmployeeDAO.getAllFromDepartment(department_id);
		employeeTable.setItems(employeesList);
	}




по аналогии я решил создать календарь для работника:
есть 12 таблиц на каждый месяц, в которых будет столько столбцов, сколько дней в месяце. Работаем поочередно с каждой такой таблицей.
В таблице в каждом столбце дня должна быть только одна запись - это String специальный код дня (явка, не явка, выходной)
Я создал календарь:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
package model;

import java.sql.Date;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class Calendar2 {

	private int employeeId;
	private int currentYear;
	private Map<Date, String> dates;
	private List<ArrayList<SimpleStringProperty>> datecodes;

	public Calendar2(final int year, final int employee_id) {
		this.employeeId = employee_id;
		this.currentYear = year;
		this.dates = new HashMap<Date, String>();
		this.datecodes = new ArrayList<>();
		for(int monthCount = 1; monthCount <=12; monthCount++) {
			ArrayList<SimpleStringProperty> month = new ArrayList<>();
			datecodes.add(month);
		}
	}

	public void setDayCode(final int month, final int day, String name) {
		this.datecodes.get(month-1).get(day-1).setValue(name);
	}
	public String getDayCode(final int month, final int day) {
		return this.datecodes.get(month-1).get(day-1).get();
	}
	public StringProperty getDayCodeProperty(final int month, final int day) {
		return this.datecodes.get(month-1).get(day-1);
	}

	public void setDatesMap(Map<Date, String> map) {
		this.dates = map;
	}
	
	public int getEmployeeId() {
		return this.employeeId;
	}
	
	public int getMonthDayCount(final int monthId) {
		return this.datecodes.get(monthId).size();
	}

	public void prepareDatesByMonth() {
		for (int monthNum = 1; monthNum <= 12; monthNum++) {
			YearMonth ymObject = YearMonth.of(currentYear, monthNum);
			int maxDayNum = ymObject.lengthOfMonth();
			for(int dayCount = 1; dayCount <= maxDayNum; dayCount++) {
				Date date = Date.valueOf(LocalDate.of(currentYear,monthNum,dayCount));
				if(dates.containsKey(date)) {
					if(dates.get(date) == null)
						datecodes.get(monthNum-1).add(new SimpleStringProperty("?"));
					else
						datecodes.get(monthNum-1).add(new SimpleStringProperty(dates.get(date)));
				}
				else {
					datecodes.get(monthNum-1).add(new SimpleStringProperty("X"));
				}
			}
		}
	}
}




но как только пытаюсь подвязать значения к столбцам, мне пишет error:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
for(int monthCount = 1; monthCount <= 12; monthCount++) {
			int maxMonthDay = Calendar2.getMonthDayCount(monthCount);
			for(int dayCount = 1; dayCount <= maxMonthDay; dayCount++) {
				monthTable.get(monthCount-1).getColumns().get(dayCount-1).setCellValueFactory(
						cellData -> cellData.getValue().getDayCodeProperty(monthCount, dayCount));
			}
				
		}



ошибка на 5 строке
- Type mismatch: cannot convert from StringProperty to
ObservableValue<capture#1-of ?>

не понимаю зачем оно конвертировать хочет в ObservableValue ведь я потом в ObservableList<Calendar2> добавлю этот календарь?

если конкретно, то у меня есть ArrayList заполненный нужными строками, есть таблица с таким же количеством колонок.
как мне эти строки перенести в таблицу один к одному?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / [JavaFX] Как вставить много значений во много столбцов (Календарный месяц)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]