Close Menu
Datormagazin
    Facebook
    Senaste testerna
    • Test: Huawei Watch 5 & Fit 4 Pro
    • Test: Huawei Watch GT 3 SE
    • Test: Beoplay EX
    • Test: Sony Xperia 1 III
    • Test: Cooler Master Masterair MA624 Stealth och MA612 Stealth ARGB
    DatormagazinDatormagazin
    • Hem
    • Nyheter
    • Tester
      1. Toppklass
      2. DMZ Rekommenderar
      3. Gaming
      4. Jämförande test
      5. View All

      Test: EufyCam E40 kit

      13 juli, 2025

      Test: OnePlus Pad 3 och Smart Keyboard

      10 juni, 2025

      Test: Huawei Watch 5 & Fit 4 Pro

      15 maj, 2025

      Motorola Razr 60 Ultra

      6 maj, 2025

      Test: JBL Tour One M3 smart TX

      9 juli, 2025

      Test: HP EliteBook Ultra G1i 14

      8 juli, 2025

      Test: Shokz OpenFit 2+

      6 juli, 2025

      Test: Marshall Kilburn III

      3 juli, 2025

      Test: NZXT – en färgstark highend kombo

      2 juli, 2025

      Test: Kingston FURY Renegade G5 SFYR2S/2T0

      28 juni, 2025

      Test: Kioxia Exceria Plus G4

      28 maj, 2025

      Test: AOC AGON PRO AG456UCZD

      21 maj, 2025

      Test: Logitech Ergo K860 vs. Microsoft Sculpt Ergonomic Keyboard

      19 augusti, 2021

      Vi utser den bästa multiskrivaren

      20 maj, 2021

      Test: Cooler Master Masterair MA624 Stealth och MA612 Stealth ARGB

      12 maj, 2021

      Test: Oneplus 9 Pro och Oneplus 9

      21 april, 2021

      Test: EufyCam E40 kit

      13 juli, 2025

      Test: OnePlus Nord 5

      11 juli, 2025

      Test: JBL Tour One M3 smart TX

      9 juli, 2025

      Test: HP EliteBook Ultra G1i 14

      8 juli, 2025
    • DMZ-riggen
    • Programtips
    • Gaming
    • Fråga experten
      • Hårdvara
      • Mjukvara
    • DMZ Retro
    • Shop
    • Om DMZ
      • Om Datormagazin
      • Annonsera
      • Nyhetsbrevet
      • Kundtjänst
      • Press & PR
    Facebook
    Datormagazin
    Hem » Fråga experten » Skriva ut JFrame innehållet till fil
    Fråga experten

    Skriva ut JFrame innehållet till fil

    redaktionenBy redaktionen6 juli, 20093 Mins Read

    Fråga

    Finns det något sätt att dumpa innehållet i ett JFrame-fönster till en fil av typen .txt, .rtf (ev. .html) eller liknande, så filen kan öppnas av någon som inte har tillgång till mitt Java-program. (JFrame-fönstret innehåller ett flertal JTextPane-objekt.)

    Svar

    Hej Ulf, i Java är det ganska lätt att skriva ut vad som syns på skärmen till en postscript-fil.

    Börja med att implementera interfacet Printable för den JFrame-klass som skall vara sparbar. Alla klasser som följer detta interface måste tillhandahålla en metod som heter public int print(Graphics g,PageFormat pf,int pageIndex), varav tanken är att metoden skall rita direkt på g. Men som du säkert vet implementerar redan JFrame och dess contentPane en metod som heter paint, därför räcker det för oss att skicka g till getContentPane().paint(g).

    Ok, så nu har vi en printable instans på plats, så nu är det dags att börja använda den med.

    Börja därför med att skapa en PrintRequestAttributeSet som innehåller olika värden för den postscript-fil som skall skapas. Skapa därefter ett PrinterJob som får tillgång till ditt fönster genom metoden setPrintable.

    Printerjobbet måste även ha tillgång till en service som hanterar postscript skapandet, detta gör vi genom att anropa PrinterJob.lookupStreamPrintServices(”application/postscript”) vilket listar tillgängliga klasser som kan skapa serviceobjekt för detta format. I vårt exempel listat nedan nöjer vi oss med första bästa och ställer in jobbet att använda den genom job.setPrintService().

    Nu är allt uppsatt och det räcker att skicka vårt PrintRequestAttributeSet objekt till job.print() så kommer ditt fönster skrivas ut till en postscript-fil.

    (Om man får problem med postscript och sitter i GNU/Linux miljö, så kan man installera ps2pdf, vilket konventerar postscript till pdf)

    Hoppas det här löser ditt problem…

    import java.io.*;
    import java.awt.*;
    import java.awt.print.*;
    import javax.print.*;
    import javax.print.attribute.*;
    import javax.print.attribute.standard.*;
    import javax.swing.*;
    public class Testar extends JFrame implements Printable {
    public Testar() {
    super(”Testar”);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());
    add(new JButton(”Button”), BorderLayout.CENTER);
    add(new JButton(”Another Button”), BorderLayout.EAST);
    pack();
    setVisible(true);
    }
    public static void main(String args[]) {
    Testar t = new Testar();
    t.print();
    }
    public int print(Graphics g,PageFormat pf,int pageIndex) {
    if (pageIndex == 0) {
    this.getContentPane().paint(g);
    return Printable.PAGE_EXISTS;
    } else {
    return Printable.NO_SUCH_PAGE;
    }
    }
    public void print() {
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(new Copies(1));
    aset.add(new JobName(”My job”, null));
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(this);
    StreamPrintServiceFactory []factories =
    PrinterJob.lookupStreamPrintServices(”application/postscript”);
    if (factories.length > 0) {
    try {
    FileOutputStream outstream = new FileOutputStream(”out.ps”);
    job.setPrintService(factories[0].getPrintService(outstream));
    job.print(aset);
    System.out.println(”File written, look at the file and compare it with our GUI!”);
    } catch (FileNotFoundException e) {
    } catch (java.awt.print.PrinterException pe) { }
    }
    }
    }

    Källa: http://java.sun.com/javase/6/docs/technotes/guides/jps/spec/printing2d.fm1.html#999400

    java
    Share. Facebook Twitter LinkedIn Email WhatsApp

    Missa inte

    Fråga experten

    Konvertera till Windows 11

    8 november, 20211 Min Read
    linuxtips

    Minitips – Fånga ett fönster som rymt

    22 oktober, 20211 Min Read
    Fråga experten

    Hur får jag Wi-Fi genom betongvägg?

    26 augusti, 20212 Mins Read
    Fråga experten

    Hur kan jag slippa nätverkskabel till övervåningen?

    6 augusti, 20212 Mins Read
    Add A Comment

    Leave A Reply Cancel Reply

    Senaste kommentarerna
    • Andreas Rejbrand om Test: Samsung Galaxy watch 7
    • Petter om Test: Samsung Galaxy watch 7
    • Anders Öhman om Test: Samsung Galaxy watch 7
    • Tobias om Test: Samsung Galaxy watch 7
    • Anders om Test: HP Envy X360
    Fler nyheter

    Bara timmar kvar av kampanjen för Datormagazin Retro #8 – glöm inte att förboka

    22 november, 2024

    Öka cybersäkerhetsmedvetenheten under cybersäkerhetsmånaden

    22 oktober, 2024

    Glorious Gamings Pro-möss lanseras i vit

    25 september, 2024

    Gen Z och kvinnor väljer mobilen framför sex

    25 september, 2024

    Toppklass

    Test: Huawei Watch 5 & Fit 4 Pro

    15 maj, 2025

    Test: OnePlus 12

    23 februari, 2024

    Test: Philips Evnia 49M2C8900

    7 januari, 2024

    Test: Corsair Dominator Titanium DDR5

    28 september, 2023
      Kontaktinformation
      Kontaktinformation

      Omsoc Publishing AB
      Datormagazin
      Box 440 73
      100 73 Stockholm
      Sweden

      Telefonnummer: +46 8–208 118
      E-post: datormagazin@datormagazin.se

      Missa inte

      M.2 optimerad NAS-prestanda

      2 september, 2024

      WiFi 7 – När, var, hur & varför

      23 augusti, 2023

      TCS digitala tvillingar och deras prediktiva kraft.

      4 juli, 2023
      Datormagazin
      Facebook YouTube RSS
      • Om cookies
      • Hantering av personuppgifter
      • Köpvillkor www.datormagazin.se
      © 2025 Datormagazin/Omsoc Publishing AB, org-nr: 559034-9014 – Ansvarig utgivare: Anders Öhman

      Type above and press Enter to search. Press Esc to cancel.