如何打印出JTable的特定行/列?
我能够打印完整的JTable,但实际上我想要更多地打印JTable的特定部分,例如从第10行到第50行以及第70列到第150列。怎么做?
获取所选片段的单元格边界并计算所需区域( Rectangle
),定义剪辑区域以仅绘制所需区域,在可打印中使用Graphics's
translate()方法移动渲染。
我也遇到过这个问题。 通过在打印前隐藏列并在打印后恢复列来解决:
// get column num from settings int num = gridSettings.getColumnsOnPage();// first columns of the table will be printed final TableColumnModel model = table.getColumnModel(); // list of removed columns. After printing we add them back final List removed = new ArrayList (); int columnCount = model.getColumnCount(); // hiding columns which are not used for printing for(int i = num; i < columnCount; ++i){ TableColumn col = model.getColumn(num); removed.add(col); model.removeColumn(col); } // printing after GUI will be updated SwingUtilities.invokeLater(new Runnable() { public void run() { // table printing try { table.print(PrintMode.FIT_WIDTH, null, null, true, hpset, true); // here can be your printing } catch (PrinterException e) { e.printStackTrace(); } // columns restoring for(TableColumn col : removed){ model.addColumn(col); } } });
要打印JTable的特定部分,只需更改此代码即可。