Разделительная Jtable для печати отпечатков на пустом столе - PullRequest
1 голос
/ 12 февраля 2020

Чтобы сделать это коротким, я хочу напечатать таблицу, которая разделена на разделы (столбцы 1 - 16 и столбцы 17 вверх), и это код, который я задумал. Однако с этим кодом будет напечатана только первая часть таблицы, а другая часть будет пустой.

public void printing()
{        
    Book book = new Book();
    PrinterJob job = PrinterJob.getPrinterJob();
    PageFormat pf = job.defaultPage();
    pf.setOrientation(PageFormat.LANDSCAPE);

    JTable p_table = print_table(); //Arranges and gets the table to be printed

    boolean printAccepted = job.printDialog();
    if (printAccepted) {
        try {

            for(int x = 1; x < 16; x++)
            {
                p_table.getColumnModel().getColumn(x).setMinWidth(0);
                p_table.getColumnModel().getColumn(x).setMaxWidth(0);
            }

            Printable printable1 = p_table.getPrintable(
                    JTable.PrintMode.FIT_WIDTH,
                    new MessageFormat("SCHEDULE"),
                    new MessageFormat("Page - {0}"));
            book.append(printable1, pf, 100);
            job.setPageable(book);
            job.print();

            for(int x = 1; x < 16; x++)
            {
                p_table.getColumnModel().getColumn(x).setMinWidth(80);
                p_table.getColumnModel().getColumn(x).setMaxWidth(80);
            }

            for(int x = 16; x < p_table.getColumnCount(); x++)
            {
                p_table.getColumnModel().getColumn(x).setMinWidth(0);
                p_table.getColumnModel().getColumn(x).setMaxWidth(0);
            }

            Printable printable = p_table.getPrintable(
                    JTable.PrintMode.FIT_WIDTH,
                    new MessageFormat("SCHEDULE"),
                    new MessageFormat("Page - {0}"));
            book.append(printable, pf, 100);
            job.setPageable(book);
            job.print();

        } catch (PrinterException e) {
            System.out.println(e);
        }
    }
}

Я попытался продублировать таблицу, используя

JTable p_table = print_table();
JTable p_table = p_table;

//JTable p_table = new JTable(p_table.getModel());

Однако в результате обе таблицы стали пустыми, поскольку редактирование одной таблицы влияет на другую. И создание новой таблицы путем копирования модели таблицы первой таблицы также печатает пустую таблицу. Есть ли лучший способ сделать это?

Обратите внимание, что печать таблицы без ее деления работает совершенно нормально.

Чтобы дать вам представление о выводе, обратитесь к к фотографиям

enter image description here

enter image description here

...