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();
}
}
