Avatar billede nielsbrinch Nybegynder
10. maj 2002 - 12:07 Der er 2 løsninger

LANDSCAPE print

Jeg vil udskrive via JAVA med landscape, altså på den bredde led i stedet for den høje led ... det der på dansk hedder "liggende".

Det er lykkedes mig at udskrive, og det er endda lykkedes mig at vende teksten ved hjælp af pf.setOrientation(0) (PageFormat) og ganske rigtigt kommer det ud på den rigtige led i printeren.

Printeren ved det bare ikke, og hugger derfor udskriften af hvor den normalt ville gøre det hvis papiret var stående. Min kode ser således ud:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.io.*;

import java.awt.print.PrinterJob;
import java.awt.print.*;
import java.awt.Graphics2D.*;
import java.awt.geom.*;

class Bestillingsliste extends JDialog implements Printable
{
//  Paper paper = new Paper();
 
  public Bestillingsliste()
  {
      print();
    System.out.println("Der udskrives");
  }
 
  PrinterJob printJob;
 
  // Her startes udskriften med dialog til en printmanager (printjob objekt)
  private void print()
  // Pre:    Der er valgt udskriv i menuen
  // Post: Printerjobbet initialiseres
  {
/*    paper.setSize(1000.0, 450.0);
    paper.setImageableArea(50, 50, 950.0, 400.0);*/
    printJob = PrinterJob.getPrinterJob();
//    PageFormat format = new PageFormat();
    printJob.setPrintable(this);
//    printJob.print();
//    System.out.println(""+PrinterJob.getPrintService());
    if (printJob.printDialog())
    {
        try
        {
            printJob.print();
          } // try
      catch (Exception ex)
      {
          ex.printStackTrace();
        } // catch
      } // if sætningen
  }  // metoden filerUdskriv_actionPerformed



    // Her kobles det det visuelle objekt på udskriften
    public int print (Graphics g, PageFormat format, int pi) throws PrinterException
    // Pre:    Printerjobbet er initialiseret
    // Post: Siden forberedes
    {
        format.setOrientation(0);
//        format.setPaper(paper);
        System.out.println("X: "+format.getImageableX()+" Y: "+format.getImageableY());
        System.out.println("Bredde: "+format.getImageableWidth()+" Højde: "+format.getImageableHeight());

    if (pi >= 1)
      {
          return Printable.NO_SUCH_PAGE;
    } // if sætning
      drawShapes ((Graphics2D) g);
    return Printable.PAGE_EXISTS;
    } // print metoden


    // Her designes udskriften grafisk
    private void drawShapes(Graphics2D g2)
    // Pre:  Printerjobbet er initialiseret og siden er forberedt
    // Post: Siden tegnes og udskrives
    {
          int rectWidth = 690;
          int rectHeight = 20;
          int x = 75;
          int y = 75;
//      Vare vare = S.admin.getVare(index);
          g2.setColor(Color.black);
          Font overskrift = new Font("Verdana",1,12);
          Font tabel = new Font("Verdana",1,12);
          Font lille = new Font("Verdana",1,12);
          g2.setFont(overskrift);
          g2.drawString("Bestillingsliste",x+20,y);
        g2.drawString("TERNINGERNE ER KASTET",x+100,y);
        g2.setFont(lille);
        g2.drawString("10. maj 02",x+20,y+20);
         
          g2.setFont(tabel);
          g2.drawString("Ugedag", x,y+40);
          g2.drawString("Dato", x+25,y+40);
          g2.drawString("Tidspunkt", x+140,y+40);
          g2.drawString("Solgt i alt", x+200,y+40);
          g2.drawString("EF", x+235,y+40);
          g2.drawString("LS", x+270,y+40);
          g2.drawString("LF", x+305,y+40);
          g2.drawString("Slæk", x+340,y+40);
          g2.drawString("Kritisk er noget som man godt kan lide at skrive", x+390,y+40);
      int placering = y+40;
      g2.setFont(new Font("Verdana", 0, 10));
      for (int i = 0; i < 10; i++)
      {
        int nr = i+1;
        g2.drawString(""+nr, x+2,placering);
        StringBuffer sb = new StringBuffer("Dette er en operation # "+i);
        if (sb.length() > 20)
        {
          sb.delete(20, sb.length());
          sb.append("...");
        }
            g2.drawString(""+sb.toString(), x+25,placering);
            g2.drawString("kolonne 1", x+140,placering);
            g2.drawString("kolonne 2", x+200,placering);
            g2.drawString("kolonne 3", x+235,placering);
            g2.drawString("kolonne 3", x+270,placering);
            g2.drawString("kolonne 3", x+305,placering);
            g2.drawString("kolonne 3", x+340,placering);
        String kritisk = "";
        if (true)
        {
          kritisk = "Ja";
        }

        else
        {
          kritisk = "Nej";
        }

            g2.drawString(""+kritisk, x+390,placering);
        placering += 13;
      }

          int xx= x;
          int yy= y+50;
          g2.drawString("Den samlede gennemløbstid er: 2",xx+100, placering+20);
          g2.draw(new Rectangle2D.Double(x,y, rectWidth, rectHeight));
  }

  void jButton1_actionPerformed(ActionEvent e)
  {
    print();
  }
}
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 12:51 #1
Avatar billede nielsbrinch Nybegynder
10. maj 2002 - 14:25 #2
lyhr007, det hjalp lidt men var ikke løsningen - baseret på det link, men især tilføjelser fra min lærer fik jeg løst det - takker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester