public void printEverything(final boolean selectedDataTableObjectsOnly) {

		SwingUtilities.invokeLater(
				new Runnable() {
					public void run() {
						if(_printFrame != null) {
							_printFrame.getFrame().dispose();
							_printFrame = null;
						}
						initPrintFrame(selectedDataTableObjectsOnly);
					}
				}
		);

		/** Diese komische Verschachtelung ist notwendig, da innerhalb von initPrintFrame()
		 * weitere invokeLater-Aufrufe stattfinden, deren Ergebnis für das unten zu konstruierende
		 * Book notwendig sind! Toll ist anders.
		 */
		SwingUtilities.invokeLater(
				new Runnable() {
					public void run() {

						_printFrame.getFrame().setVisible(true);

						final PrinterJob printerJob = PrinterJob.getPrinterJob();
						final PageFormat defaultPage = printerJob.defaultPage();
						PageFormat pageFormat = printerJob.pageDialog(defaultPage);
						if(pageFormat == defaultPage) {
							if(_printFrame != null) {
								_printFrame.getFrame().dispose();
								_printFrame = null;
							}
							return;
						}


						final DataViewPanel printPanel = _printFrame.getDataViewPanel();
						final int maximumValue = printPanel.getVerticalScrollBarsMaximumValue();
						final int visibleAmount = printPanel.getVerticalScrollBarsVisibleAmount();
						int value = 0;

						final Book book = new Book();
						while(value < maximumValue - visibleAmount) {	// alle außer der letzten Seite
							book.append(new PageDescription(value), pageFormat);
							value += printPanel.getVisibleViewPortHeight();
							if(value == 0) {
								break;
							}
						}
						book.append(new PageDescription(value), pageFormat); // Darf man nicht vergessen!

						// Die nächsten drei Zeilen bedürfen einer Erklärung: die in initPrintPanel dem
						// printPanel hinzugefügten DataTableobjects werden ab dem zweiten erst durch
						// den Adjustmentlistener der vertikalen Scrollbar erstellt. Wenn alles auf eine
						// Seite passt, kommt aber kein AdjustmentChangedEvent; diesen lösen wir nun hier
						// aus, indem wir um 1 herunterscrollen (0 tut es nicht).
						if(book.getNumberOfPages() == 1) {
							printPanel.setVerticalScrollBarsMaximumValue(maximumValue + 1);
							printPanel.setVerticalScrollBarValue(1);
						}

						printerJob.setPageable(book);

						final PrintRequestAttributeSet printAttributes = new HashPrintRequestAttributeSet();
						printAttributes.add(new PrinterResolution(600, 600, PrinterResolution.DPI));
						if(printerJob.printDialog()) {
							print(printerJob, printAttributes);
						}
					}
				}
		);
	}