private void calcNavigatePageNumbers() {
        // 当总页数小于或等于导航页码数时
        if (pageRecode <= navigatePages) {
            navigatePageNumbers = new int[pageRecode];
            for (int i = 0; i < pageRecode; i++) {
                navigatePageNumbers[i] = i + 1;
            }
        } else { // 当总页数大于导航页码数时
            navigatePageNumbers = new int[navigatePages];
            int startNum = curPageNum - navigatePages / 2;
            int endNum = curPageNum + navigatePages / 2;

            if (startNum < 1) {
                startNum = 1;
                // (最前navigatePages页
                for (int i = 0; i < navigatePages; i++) {
                    navigatePageNumbers[i] = startNum++;
                }
            } else if (endNum > pageRecode) {
                endNum = pageRecode;
                // 最后navigatePages页
                for (int i = navigatePages - 1; i >= 0; i--) {
                    navigatePageNumbers[i] = endNum--;
                }
            } else {
                // 所有中间页
                for (int i = 0; i < navigatePages; i++) {
                    navigatePageNumbers[i] = startNum++;
                }
            }
        }
    }