JTable mit mehreren headers und footers ausdrucken.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JTable mit mehreren headers und footers ausdrucken.

    Hallo zusammen,

    ich habe eine Tabelle und diese drucke ich über print(JTable.PrintMode printMode, MessageFormat headerFormat,MessageFormat footerFormat) aus. Da ich nun mehrere Überschriften und Untertitel zu der Tabelle mit ausdrucken will, habe ich versucht dies über "\n\r" und über den HTML Befehl "<br>" hinzubekommen. Leider funktioniert dies nicht.
    Kann mir einer von euch viel. weiterhelfen?

    Und hier der Code:

    Quellcode

    1. [code]import java.awt.*;
    2. import java.awt.event.*;
    3. import java.text.*;
    4. import java.util.Date;
    5. import javax.swing.*;
    6. public class Beispiel extends JFrame implements ActionListener {
    7. private JTable table;
    8. public static void main(String[] args) {
    9. Beispiel tl = new Beispiel();
    10. tl.setVisible(true);
    11. tl.pack();
    12. }
    13. public Beispiel() {
    14. setLayout(new BorderLayout());
    15. // DruckButton
    16. JButton print = new JButton("Drucken");
    17. add(print, BorderLayout.SOUTH);
    18. print.addActionListener(this);
    19. // Tabelle
    20. add(new JScrollPane(createTable()), BorderLayout.CENTER);
    21. // schließt das Frame
    22. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    23. }
    24. public JTable createTable() {
    25. // titel
    26. String[] title = new String[] { "Datum", "Von", "Bis",
    27. "Dauerinsgesamt", "Bemerkung" };
    28. // daten
    29. String[][] data = new String[][] { { "", "", "", "", "" },
    30. { "", "", "", "", "" } };
    31. table = new JTable(data, title);
    32. table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    33. return table;
    34. }
    35. public void actionPerformed(ActionEvent e1) {
    36. MessageFormat header = new MessageFormat("Überschrift");
    37. MessageFormat footer = new MessageFormat("Untertitel");
    38. try {
    39. table.print(JTable.PrintMode.FIT_WIDTH, header, footer);
    40. } catch (Exception e2) {
    41. System.err.format("Cannot print %s%n", e2.getMessage());
    42. }
    43. }
    44. }
    Alles anzeigen

    [/code]
  • Ich versuche mich mal an das Problem heranzuarbeiten.

    Quellcode

    1. print.addActionListener(this);

    Ein JFrame das ein JButton hält, der als Listener wieder das JFrame hat, ist einfach nur krass. :) Es gibt, soweit ich weiß, keinen Bonus wenn man an Klassen spaart. :) Aber das nur nebenbei.

    Wenn ich deinen Code ausführe kommt diese Exception:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: null attribute
    at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
    at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
    at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
    at sun.print.ServiceDialog.updatePanels(ServiceDialog.java:437)
    at sun.print.ServiceDialog.initPrintDialog(ServiceDialog.java:195)
    at sun.print.ServiceDialog.<init>(ServiceDialog.java:124)
    at javax.print.ServiceUI.printDialog(ServiceUI.java:188)
    at sun.print.RasterPrinterJob.printDialog(RasterPrinterJob.java:855)
    at javax.swing.JTable.print(JTable.java:6195)
    at javax.swing.JTable.print(JTable.java:6046)
    at javax.swing.JTable.print(JTable.java:6001)
    at Beispiel.actionPerformed(Beispiel.java:59)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Damit ich die Exception überhaupt bekomme habe ich catch (Exception e2) durch catch (PrinterException e2) ersetzt.
    Bei dir kommt das scheinbar garnicht vor. Deine Frage bezieht sich ja auf das Layout. Aber bevor ich das nicht zum laufen bekomme, kann ich dir nicht helfen.
  • Ich weiß, dass man dies nicht so tun soll. Aber ich habe dies gemacht, dass ich mein Quellcode kurzhalten kann :)
    Wenn ich wie du gemeint hast aus:

    Quellcode

    1. catch (Exception e2) {
    2. System.err.format("Cannot print %s%n", e2.getMessage());
    3. }


    folgendes mache

    Quellcode

    1. catch (PrinterException e2) {
    2. System.err.format("Cannot print %s%n", e2.getMessage());
    3. }


    erhalte ich keine Fehlermeldung :huh:

    P.S. Ich drucke die Seite nicht aus, sondern erstelle mir eine PDF ...