Zum Inhalt springen

Großes JTabbedPane auf eine Seite "zwängen"


Alex_winf01

Empfohlene Beiträge

Liebe Forengemeinde,

ich habe ein "kleines" Problem mit meiner Druckfunktion, die soweit funzt. ABER: Da mein JTabbedPane sehr groß ist vom Inhalt her, wird jeder Reiter auf 2 Seiten gedruckt. Gibt es eine Möglichkeit (etwa wie in Excel mit Datei -> Seite einrichten -> Skalierung -> Größe X% der Normalgröße verkleinern) die ganze Sache auf eine Seite "zu quetschen"? Fragt bitte nicht warum. Die Kollegen und der Kunde möchten das so. Und da gibt es keine Diskussion!!! Ich bitte um konstruktive Hinweise.

So drucke ich bis jetzt aus:

class druckenListener implements ActionListener

      {

         public void actionPerformed(ActionEvent e)

         {

            pj = PrinterJob.getPrinterJob();

                pj = PrinterJob.getPrinterJob();

                try

                {

                    if (pj.printDialog())

                    {

                        paper = new Paper();

                        paper.setSize(594.936, 841.536); // Set to A4 size.

                        paper.setImageableArea(30, 30, 530, 780);//set margins

                        pageFormat = new PageFormat();

                        pageFormat.setPaper(paper);

                        size = lizenzPane.getSize();

                        hauptpanel.setSize(size);

                        formular = new Formular_Lizenzbestimmung(lizenzPane);

                        pj.setPrintable(formular, pageFormat);

                        pj.print();


                    }

                }

                catch (PrinterException ex)

                {

                    ex.printStackTrace();

                }

         }

      }
class Formular_Lizenzbestimmung implements Printable

{

    private Container container;

    private int index = -1;

    private Rectangle page = new Rectangle(0, 0, 0, 0);


    Formular_Lizenzbestimmung(Container container)

    {

       this.container = container;

    }


    public int print(Graphics g, PageFormat pageFormat, int pageIndex)

    {

        Graphics2D g2d = (Graphics2D) g;

        g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

        int iWidth = (int) pageFormat.getImageableWidth();

        int iHeight = (int) pageFormat.getImageableHeight();

        double scaleFactor = (double) iWidth / (double) container.getWidth();


        while (index < pageIndex)

        {

            if (pageIndex > container.getHeight() * scaleFactor / iHeight)

            {

                return NO_SUCH_PAGE;

            }

            page.y += page.height;

            page.width = (int) (iWidth / scaleFactor);

            page.height = (int) (iHeight / scaleFactor);

            index++;

        }


        g2d.scale(scaleFactor, scaleFactor);


        g2d.translate(0, -page.y);

        g2d.clip(page);

        container.print(g2d);


        return PAGE_EXISTS;

    }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach so, die passt in der Länge nicht....nagut, da hatte ich jetzt gedacht, dass das so sein soll, da in deinem code ja extra integriert ist, dass er das bei zu großer Höhe auf mehrere Blätter teilt.

Dann wäre spontan meine erste idee nun, entweder nen extra wert für die Höhenskalieren zu berechnen, dann wird das ausgedruckte aber wahrscheinlich verzerrt, oder du berechnest den Wert für die Höhenskalierung, vergleichst den mit der Wert für die Breitenskalierung und nimmst dann den kleinsten für beide.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...