我正在努力以自己的方式打印JTables。这是我在打印时想要获得的:

Page 1 Page 2 Page 3
| 1 2 3 | | 4 5 6 | | 7 8 9 |
|1 | |1 | |1 |
|2 | |2 | |2 |
|3 | |3 | |3 |
Page 4 Page 5 Page 6
| 1 2 3 | | 4 5 6 | | 7 8 9 |
|4 | |4 | |4 |
|5 | |5 | |5 |
|6 | |6 | |6 |

如您所见,我想在每个页面上都获得tableHeader(我成功获得了它!),并且也希望在每个页面上都获得行号。有人已经做过这样的事情吗?

这就是我的JTable的管理方式:

scrollPane = new JScrollPane();
scrollPane.setViewportView(table); // basic JTable
scrollPane.setRowHeaderView(rowTable); // basic JTable with only 1 column
tableHeader = table.getTableHeader(); //
scrollPane.setColumnHeaderView(tableHeader);

我试图在javax.swing.TablePrintable中进行类似的操作,即每次在剪辑中打印表格的位置都在计算,但没有成功:行号仅打印在第一页上。我有点绝望,有什么想法吗?

编辑:这是一些图片(太大而无法在此处发布),以显示我目前所获得的以及我想要获得的:

第1页和第2页:http://i.imgur.com/euzeq70.png

如您所见,第二页上的行号应该相同,因为它是表格的左侧部分(表格的宽度适合2页)

第3页和第4页:http://i.imgur.com/YCFLu4X.png

表的中间部分。如您所见,现在行号不应为1 ... 49,而应为50 ... 99,并且它们仍不会显示在左侧页面上

第5和6页:http://i.imgur.com/4xugX4j.png

表格的底部。行号应为100,并且还应显示在左侧页面上。

我希望现在情况会更清楚。

参考方案

我认为最简单的解决方案是生成类似

public class WrapPrintable implements Printable

并覆盖

public int print(final Graphics graphics,
final PageFormat pageFormat,
int pageIndex) throws PrinterException {

用于Paperpaper的设置以添加附加的页眉和/或页脚空间,并编写一些类似的方法

Graphics2D g2d = printGraphics(graphics, pageFormat, pageIndex, format);

然后printGraphics进行页眉/页脚调整,这需要您自己创建...我已经做过一次,但是代码很容易崩溃,因此只有很小的片段。

Java Swing SearchBox模型 - java

我需要使用Java Swing的搜索框,如果单击任何建议,当输入字母时它将显示来自数据库的建议,它将执行一些操作。如果有可能在Java swing中,请提供源代码提前致谢 java大神给出的解决方案 您可以使用DefaultComboBoxModel,输出将是这样。Try this在此代码中,您将找到countries数组,因此您需要从数据库中获取此数组。Swing-典型桌面应用程序中的并发 - java

这可能是一个广泛的问题,但我想知道单用户桌面应用程序通常在何处使用并发。您如何发现理想情况下(在设计阶段)并发问题?附注:从操作系统理论上来说,并发问题通常发生在无法共享资源(例如打印机)的情况下。不过,我仍然对在编程级别上可能发生的情况感到迷惑。 java大神给出的解决方案 Event Dispatch thread与其他逻辑之间的Swing中可能存在线程…Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…