DataGrid (或 JTable) 本身不支援「滾動到底自動載入下一頁」,需自行監聽滾動事件並觸發分頁邏輯。核心步驟:
JScrollPane 的垂直 JScrollBar,加入 AdjustmentListener。value + extent >= maximum - threshold (即滾動接近底部) 時觸發載入。SwingUtilities.invokeLater 更新 TableModel。isLoading,避免快速滾動產生多次請求。scrollBar.addAdjustmentListener(e -> {
if (!e.getValueIsAdjusting() && !isLoading) {
int extent = scrollBar.getModel().getExtent();
int max = scrollBar.getMaximum();
int value = scrollBar.getValue();
if (value + extent >= max - 50) { // 50 為閾值
loadNextPage();
}
}
});
此模式適用於所有基於 Swing 的表格元件,關鍵在於「滾動事件 + 閾值判斷 + 非同步更新」三部曲。