我嘗試使用主JTable的選定行和相同的頭和單元格渲染執行臨時JTable,但是當我嘗試打印它時,我只是得到一個帶有行邊框的空矩形,I在How to print out specific rows/columns of a JTable?看到使用矩形和小區邊界的另一種方式,但我不明白,我需要一些幫助,以使其更清晰如何打印選定的行JTable
回答
似乎工作沒關係,我...
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
public class TestPrint {
public static void main(String[] args) {
new TestPrint();
}
public TestPrint() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
DefaultTableModel model = new DefaultTableModel(0, 26);
for (int row = 0; row < 26; row++) {
Vector data = new Vector(26);
for (int col = 0; col < 26; col++) {
String value = row + "x" + ((char) (col + 'A'));
data.add(value);
}
model.addRow(data);
}
JTable table = new JTable(model);
JButton print = new JButton("Print");
print.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
DefaultTableModel viewModel = (DefaultTableModel) table.getModel();
DefaultTableModel printModel = new DefaultTableModel(0, viewModel.getColumnCount());
for (int row : table.getSelectedRows()) {
printModel.addRow((Vector) viewModel.getDataVector().get(row));
}
JTable toPrint = new JTable(printModel);
toPrint.setSize(toPrint.getPreferredSize());
JTableHeader tableHeader = toPrint.getTableHeader();
tableHeader.setSize(tableHeader.getPreferredSize());
toPrint.print(JTable.PrintMode.FIT_WIDTH);
} catch (PrinterException ex) {
ex.printStackTrace();
}
}
});
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.add(print, BorderLayout.SOUTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
你的例子完美的工作,我會檢查我的問題是什麼,非常感謝。 – 2014-10-27 04:31:16
我「懷疑」桌子在打印前需要調整大小,但這只是我頭頂的想法 – MadProgrammer 2014-10-27 04:33:40
是的,這是關於大小,但現在我有另一個問題,toPrint JTable的打印版本是不同的主表可打印,所有列的寬度是方式更小,我試圖設置setPreferredWidth與每列的寬度,但它仍然給我小列 – 2014-10-27 05:05:16
- 1. 如何打印JTable?
- 2. 如何JTable打印PageSetup?
- 3. 打印JTable中
- 4. 如何打印整頁的JTable
- 5. 打印前後特定文本的jtable
- 6. 從JTable打印用戶指定的列
- 7. 打印整個jtable
- 8. 如何將JTextField打印到JTable中?
- 9. 如何打印_r選定的數組?
- 10. JTable:沒有選定的行
- 11. 使用awk打印選定的行
- 12. 在GridView中打印選定的行
- 13. 打印大文件中的選定行
- 14. 從HTML表中打印選定的行
- 15. JTable列名不打印
- 16. 如何選擇打印機並使用AutoHotKey進行打印
- 17. 僅通過Chrome打印選擇打印選定的選項
- 18. 如何使用asp.net mvc和XtraReports打印選定的行
- 19. 打印選定的圖表
- 20. 如何打開JTable?
- 21. 如何在特定行中打印QString
- 22. JTable的打印不打印頁眉和頁腳
- 23. 打印在Java方法不打印的JTable中
- 24. 如何在C#打印選定行從DataGridView與SQL
- 25. 定時打印行
- 26. 的MessageFormat頭/ footerFormat如何更改字體爲JTable的打印
- 27. 截斷的JTable打印輸出
- 28. 如何在javascript中打印打印區域進行打印
- 29. 從選定的JTable
- 30. 特定行的打印
我假設你的意思是,你創建了第二個JTable,帶有一個Tab leModel'其中包含來自主JTable'的所選行... – MadProgrammer 2014-10-27 03:55:57
是的,它不起作用 – 2014-10-27 04:01:32