Announcement

Collapse
No announcement yet.

Problem mit Druck von Components

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Druck von Components

    Tach zusammen!!!

    Ich muss aus einer Anwendung heraus kurze Texte drucken. Am besten wäre es wenn ich JWrappingLabel (Swing) nutzen könnte wegen dem automatischen Zeilenumbruch. Nun versuche ich mit allen Miteln Dialogelemente auf den Drucker zu bekommen. Mit dem untenstehenden Schnipsel gelingt es zumindest Texte (mittels drawString()) und Grafik zu drucken. Aber keine der Methoden print(),printAll() oder printComponents() aus Component führt zum gewünschten Erfolg. Ist der unten gezeigte Ansatz (ich habe der EInfachheit halber jetzt keine JFCs verwendet) grundsätzlich richtig oder bin ich absolut auf dem Holzweg???

    Schönen Dank im voraus

    Rolf

    /* Druck-Test */

    import java.awt.*;
    import java.awt.event.*;

    public class PrinterTest
    extends Frame
    {
    public static void main(String[] args) {
    PrinterTest wnd = new PrinterTest();
    }

    public PrinterTest() {
    super("PrinterTest");
    addWindowListener(
    new WindowAdapter() {
    public void windowClosing(WindowEvent event) {
    System.exit(0);
    }
    }
    );
    setBackground(Color.lightGray);
    setSize(400,400);
    setVisible(true);
    // 2 sek. Delay
    try {
    Thread.sleep(2000);
    } catch (InterruptedException e) {
    // notting
    }
    printTestPage();
    }

    public void paint(Graphics g) {

    }

    public void printTestPage() {
    PrintJob pjob = getToolkit().getPrintJob(this,"Testseite",null);
    if (pjob != null) {
    // Drucken
    Graphics pg = pjob.getGraphics();
    if (pg != null) {
    // Text
    pg.setFont(new Font("TimesRoman",Font.PLAIN,24));
    pg.drawString("Testseite",40,70);
    // Formularelemente
    Panel pan = new Panel();
    pan.setLayout(null);
    Label lab = new Label("Dies ist ein Testlabel");
    lab.setBounds(50,100,250,24);
    pan.add(lab);
    pan.printComponents(pg);
    //Seite ausgeben
    pg.dispose();
    }
    pjob.end();
    }
    }

    }

  • #2
    Hallo kannst du mir mehr Infos zu diesem

    JWrappingLabel geben?
    Danke Thoma

    Comment


    • #3
      Nicht wirklich, da ich selber nicht mehr in die Richtung weiter geforscht habe - da mußt Du vermutlich die JDK-Referenz bemühen.
      Ich habe das Problem anders gelöst und mir eine Klasse geschrieben die einen String auseinandernimmt um Anhand der Blanks die Wortgrenzen zu finden. Die Pixel-Länge des Strings wird dann jeweils mit stringWidth aus FontMetrics geprüft und eventuell ein Umbruch erzeugt.
      Die einzelnen "Zeilen" werden dann mit Graphics.drawString() ausgegeben.

      Gruß Rol

      Comment


      • #4
        Hallo Rolf,
        wo auch immer Du diese Klasse her hast, sie ist nicht im normalen JDK enthalten. Kann es sein, dass Du eine Java-Umgebung mit eigener klassenbibliothek (z.b. VisualAge) verwendest, und die Klasse aus deren Klassenbibliothek stammt ???

        Gruss Jürge

        Comment

        Working...
        X