拆分模块

This commit is contained in:
2025-09-03 20:56:44 +08:00
parent 08cc2c29a5
commit a2f5e4864b
939 changed files with 14227 additions and 9607 deletions

View File

@@ -0,0 +1,98 @@
package com.ecep.contract.util;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import org.springframework.data.domain.Sort;
import javafx.scene.Node;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.MouseButton;
import javafx.scene.input.PickResult;
public class TableViewUtils {
/**
* 获取 Table 的排序
*/
public static <T> List<Sort.Order> getOrders(TableView<T> table) {
return table.getSortOrder().stream().filter(c -> {
if (!c.isSortable()) {
return false;
}
String id = c.getId();
return id.endsWith("Column");
}).map(c -> {
String id = c.getId();
id = id.replace(table.getId() + "_", "");
id = id.replace("Column", "");
Sort.Direction dir = c.getSortType() == TableColumn.SortType.ASCENDING ? Sort.Direction.ASC : Sort.Direction.DESC;
return new Sort.Order(dir, id);
}).toList();
}
public static <T> void bindDoubleClicked(TableView<T> table, Consumer<T> consumer) {
table.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && event.getButton() == MouseButton.PRIMARY) {
PickResult pickResult = event.getPickResult();
Node intersectedNode = pickResult.getIntersectedNode();
if (intersectedNode instanceof TableRow) {
// 鼠标点击的地方没有定义列,只返回了行,跳过不做处理
TableRow<T> row = (TableRow<T>) intersectedNode;
row.getItem();
return;
}
T selectedItem = table.getSelectionModel().getSelectedItem();
if (selectedItem != null) {
try {
consumer.accept(selectedItem);
} catch (UnsupportedOperationException e) {
UITools.showExceptionAndWait("当前操作不支持", e);
} catch (Exception e) {
UITools.showExceptionAndWait(e.getMessage(), e);
}
}
}
});
}
public static <T> void bindEnterPressed(TableView<T> table, Consumer<T> consumer) {
table.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.ENTER) {
T selectedItem = table.getSelectionModel().getSelectedItem();
if (selectedItem != null) {
consumer.accept(selectedItem);
}
}
});
}
/**
* 计算表格的可视行数
*
* @param table 表格视图
* @param <T> T
* @return 可视行数
*/
public static <T> int getTableViewVisibleRows(TableView<T> table) {
int rows = 0;
Set<Node> tableRow = table.lookupAll("TableRow");
for (Node node : tableRow) {
if (node instanceof TableRow) {
if (!node.isVisible()) {
continue;
}
rows++;
}
}
return rows;
}
}