如何打印出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的特定部分,只需更改此代码即可。