我有一个表视图
我上这三门课是为了做报告:
public record DayCell(
LocalDate date,
DayType type
) {
public String nameOfDay() {
return DateTimeFormatter.ofPattern("EE", Locale.ENGLISH).format(date);
}
}
public enum DayType {
COMPASSIONATE_LEAVE("C"),
EMPTY("E"),
NOT_ON_PAYROLL("N"),
QUARANTINE("Q"),
REGULAR_LEAVE("R"),
SICK_LEAVE("S"),
TRAINING("TRG"),
TRAVEL("T"),
UNPAID_LEAVE("U");
private final String shortName;
DayType(String shortName) {
this.shortName = shortName;
}
}
public record MonthRow(
String name,
DayCell[] days // amount of days in that specific month
) {
}
然后我创建表内容:
public ObservableList<MonthRow> createMonth(int year) {
MonthRow[] months = new MonthRow[12];
for (int i = 0; i < months.length; i++) {
LocalDate date = LocalDate.of(year, i + 1, 1);
months[i] = new MonthRow(date.getMonth().getDisplayName(TextStyle.FULL, Locale.ENGLISH), createCells(date));
}
return FXCollections.observableArrayList(months);
}
public DayCell[] createCells(LocalDate date) {
DayCell[] cells = new DayCell[date.lengthOfMonth()];
for (int i = 0; i < cells.length; i++) {
cells[i] = new DayCell(date.plusDays(i), DayType.EMPTY);
}
return cells;
}
现在有了TableView的可观察列表,我有点卡住了。我想要一个月的TableCollie和31个DayCell的TableColns。但是,因为它是一个数组,我不确定如何将每个DayCell的cell Data反映到每个TableCell中。此外,因为有些月份没有31天,因此,单元格不应该显示缺失天数的任何内容。
每个单元格应显示
nameOfDay()
内容和颜色,并根据DayType
(将在相应的单元格工厂的某个时间进行)。
TableView示例
这可能是一个完全错误的方法,所以请不要犹豫,指导我找到一个不同的解决方案。
您可以这样做:
TableView<MonthRow> table = new TableView<>();
TableColumn<MonthRow, String> monthColumn = new TableColumn<>("Month");
monthColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getName()));
table.getColumns().add(monthColumn);
for (int i = 0; i < 31 ; i++) {
TableColumn<MonthRow, DayCell> dayColumn = new TableColumn<>(Integer.toString(i+1));
final int index = i ;
dayColumn.setCellValueFactory(cellData -> {
MonthRow month = cellData.getValue();
if (index < month.getDays().size()) {
return new SimpleObjectProperty<>(month.getDays()[index]);
} else {
return new SimpleObjectProperty<>(null);
}
});
dayColumn.setCellFactory(new TableCell<>() {
@Override
protected void updateItem(DayCell day, boolean empty) {
super.updateItem(day, empty);
if (empty | day == null) {
setText("");
} else {
setText(day.nameOfDay());
}
}
});
table.getColumns().add(dayColumn);
}
这可能是一种完全错误的方法
大概您是否需要此处的TableView
功能?例如,选择月份(行)等?也许在滚动窗格
中使用一个简单的网格窗格
会是一种更方便的方法;这实际上取决于您的项目需求。
问题内容: 我已经进行了很多编程工作,最近开始学习更多纯粹的计算机科学主题(用于工作面试)。 我知道Array和LinkedList数据结构之间的区别,但是现在我已经开始使用Java,我看到了这个ArrayList,在概念上我遇到了麻烦。 网络搜索仅真正向我展示了如何使用它们以及何时使用它们(每种优点),但是没有任何东西可以回答我的问题: 什么是ArrayList?我的假设是,它是一个维护对每个元
我创建了一个TableView,其中包含一个复选框列(isSelected)和三个信息列(姓名、姓氏、职务)。我想根据用户信息禁用一些复选框。例如,如果用户名为“Peter”,则Peter旁边的复选框将被禁用。但我不能。以下是我的一些代码: 人JAVA 控制器。JAVA
列表字面量 包裹在()内并使用逗号分隔的项称为列表项。 其实并不需要使用小括号包裹列表项,这些列表项会自动声明自己的优先级。 译注: ("a", "b", 0); # 等同于 "a", "b", 0; 列表就是标量变量的有序集合,诸如: tutorial/arrays/list_literals.p6 #!/usr/bin/env perl6 use v6; (1, 5.2, "apple")
问题内容: Varargs: 与 单数组参数: Java 1.6似乎接受/拒绝以下内容: 假设以上内容是正确的,为什么不总是使用varargs而不是单个数组参数呢?似乎免费增加了呼叫者的灵活性。 如果有,专家可以共享内部JVM的不同吗? 谢谢。 问题答案: 数组从Java的开始就出现了,而varargs是最近才添加的。因此,许多旧代码仍然很高兴地使用数组。 还要注意,使用显式数组参数调用通用var
我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该
问题内容: 如果要创建一维数组,则可以将其实现为列表,也可以使用标准库中的“数组”模块。我一直将列表用于一维数组。 我想改用数组模块的原因或情况是什么? 是为了性能和内存优化,还是我缺少明显的东西? 问题答案: 基本上,Python列表非常灵活,可以保存完全异构的任意数据,并且可以在摊销后的固定时间内非常高效地附加到它们。如果您需要高效而又省时地缩小和增加列表,则可以采用这些方法。但是它们 比C数