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: Huawei Watch 5 & Fit 4 Pro

      15 maj, 2025

      Motorola Razr 60 Ultra

      6 maj, 2025

      Test: Sennheiser HD 550

      7 april, 2025

      Test: G.Skill Trident Z5 CK F5-8200C4052G24GX2-TZ5CK 48 GB

      27 mars, 2025

      Test: Xiaomi POCO F7 Ultra

      6 juni, 2025

      Test: Kioxia Exceria Plus G4

      28 maj, 2025

      Test: AOC AGON PRO AG456UCZD

      21 maj, 2025

      Test: Asus ZenScreen Duo OLED MQ149CD

      18 maj, 2025

      Test: Kioxia Exceria Plus G4

      28 maj, 2025

      Test: AOC AGON PRO AG456UCZD

      21 maj, 2025

      Test: Cooler Master Masterliquid 360 ION & Hyper 612 APEX

      18 april, 2025

      Test: Sennheiser HD 550

      7 april, 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: Xiaomi POCO F7 Ultra

      6 juni, 2025

      Teknologin som driver e-sportturneringar: Hur allt hänger ihop

      2 juni, 2025

      Test: Asus NUC 15 Pro+

      1 juni, 2025

      Krypteringens era: Tekniken bakom säkra digitala plattformar

      1 juni, 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

    Glorious Gamings Pro-möss lanseras i vit

    25 september, 2024

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

    25 september, 2024

    Många Svenska företag lever inte upp till sina visioner gällande hållbarhet.

    21 augusti, 2024

    Nya Philips 49B2U6903CH – en skärm för ”den moderna arbetsplatsen”

    28 juni, 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.