在 Java Swing 應用程式中,若需將 JTable 的內容直接送至印表機列印,可利用 java.awt.Toolkit 取得預設的 PrintJob 來完成。以下範例示範如何透過 AWT 列印機制,將包含 JTable 的 JScrollPane 繪製到列印圖形環境中。
private void printTable() {
Toolkit kit = Toolkit.getDefaultToolkit(); // 取得工具箱
Properties props = new Properties();
props.put("awt.print.printer", "durango"); // 設定印表機名稱
props.put("awt.print.numCopies", "2"); // 設定列印份數
if (kit != null) {
// 取得列印工作物件
PrintJob printJob = kit.getPrintJob(this, "列印 頁面", props);
if (printJob != null) {
Graphics pg = printJob.getGraphics(); // 取得列印圖形環境
Graphics2D g2 = (Graphics2D) pg;
PageFormat pf = new PageFormat();
// 平移座標以符合可列印區域
g2.translate(pf.getImageableX(), pf.getImageableY());
if (pg != null) {
try {
// 將 JScrollPane 及其內容繪製至列印圖形環境
this.jScrollPane14.printAll(pg);
} finally {
pg.dispose(); // 釋放圖形資源
}
}
printJob.end(); // 結束列印工作
}
}
}
Toolkit.getPrintJob(Component, String, Properties),傳入父元件、文件名稱與列印屬性(如印表機名稱、份數)。printJob.getGraphics() 取得列印用的圖形環境,並轉型為 Graphics2D 以利後續座標轉換。PageFormat 取得可列印區域,並以 translate() 將原點移至列印邊界起始位置。JScrollPane.printAll(Graphics) 將整個捲軸窗格(包含 JTable)繪製到列印圖形環境。finally 區塊中呼叫 pg.dispose() 釋放圖形資源,最後呼叫 printJob.end() 結束列印工作。PrintJob),適用於簡單列印需求。若需更進階的分頁、頁首頁尾控制,建議改用 Java 2D 列印 API(java.awt.print.PrinterJob)。jScrollPane14 為類別中的有效欄位,且已包含目標 JTable。