Avatar billede netrotten Nybegynder
19. april 2001 - 21:31 Der er 10 kommentarer og
1 løsning

Udskrift af text fra JDK 1.2.1

Jeg bruger KAWA sammen med JDK 1.2.1 og vil gerne have nogle tips (men helst et eksempel = flere points til hjælperen) til at kunne skrive simpel tekst fra en simpel streng/array ud på printeren. Det skal ikke være grafik eller lign. bare TEXT.

Venlig hilsen
^Netrotten
Avatar billede ejoergensen Nybegynder
20. april 2001 - 12:37 #1
printerklasse med metoderne:
public Printer()
public void open () //kaldes før udskrift
public void close() // \"    når print afsluttet
public void printLine (String tekst)// udskriver tekst
public void newPage ()  // skifter side

Udskrift fra klassen BygningsRrapport:
public void udskrivBygningsRapport(Bygning enBygning){
  Printer P = new Printer();
  p.open;

  p.printLine (\"Bygningsoversigt:\");
  p.printLine (\"\");
  p.printLine (\"Matrikelnr:  \" + enBygning.getMatrikelNr());
  p.printLine (\"Gade + enBygning.getGade());
  p.printLine (\"Postnr + .....
  p.printLine (\"\");
  p.printLine (\"Lokalenr:  \" + \"Antal pladser\");

  enbygning.moveToFirstLokale();
  while (!enBygning.isEndOfLokaler()){
    p.printLine (\"(enBygning.getLokale().getLokaleNr() + \"  \" + en.Bygning.getlokale().getAntalPladser());
  enBygning.moveToNextLokale();
}
  p.newPage();
  p.close();
}

Håber det kan læses her!
Avatar billede netrotten Nybegynder
20. april 2001 - 12:55 #2
Det eksempel du har givet mig ......er det ikke løsningsforslaget til datamatikker eksamensopgave 2000!
Hvis ja så skriver den ikke papir ud på printer men ud på skærm!
Avatar billede ejoergensen Nybegynder
21. april 2001 - 14:14 #3
du er nødt til at have en henvisning til din printer også, en konfiguration som passer til din printer.
Avatar billede paarse Nybegynder
27. april 2001 - 14:32 #4
Hej NetRotten her er lige et lille eksempel på udskrivning af en enkel streng.

VH Paarse

import java.awt.*;
import java.awt.print.*;

public class PrintEksempel implements Printable
{
   
    private String text;
   
    public PrintEksempel(){
        text = \"Dette er en test\";
        udskriv( );
    }
   
    public void udskriv( ){
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        PageFormat p = printerJob.defaultPage();
        Paper paper = p.getPaper();
        paper.setImageableArea( 10,10, 575 , 821);   
        p.setPaper( paper );
        printerJob.setPrintable( this , p );
        if(printerJob.printDialog() ){
            try{ printerJob.print();}
            catch (Exception ex) {
            System.out.println(ex); ex.printStackTrace();}
        }
    }

    public int print(Graphics g, PageFormat p, int n) throws PrinterException{
        if (n >= 1){ return Printable.NO_SUCH_PAGE;}
       
        g.drawString( text, 50, 200 );       
       
        return Printable.PAGE_EXISTS;
       
    }

    public static void main( String[] args ){
        new PrintEksempel();
    }
}
Avatar billede netrotten Nybegynder
28. april 2001 - 13:46 #5
Til Paarse!
Tak for dit tekst eksempel, mennnnnn når jeg køre det kommer der kun en ren side ud af printeren.
Den udskriven ikkt stringen \"test\". Hvad gør jeg galt?????
Avatar billede netrotten Nybegynder
28. april 2001 - 13:48 #6
Endvidere angiver print-vinduet at jeg er igang med at prinet 1 til 999 sider ud. Den printer dog kun en. Men angiver den så 1 til 999??????
Avatar billede paarse Nybegynder
29. april 2001 - 08:03 #7
hej netrotten, for det første så kan jeg ikke rigtigt huske hvorfor at print-vinduet angiver at man er ved at printe fra 1 til 999 sider ud, men det gør den altså bare :-)

Det lyder mærkeligt at der ikke kommer noget ud på siden....Bruger du de samme koordinater som jeg??
Avatar billede netrotten Nybegynder
30. april 2001 - 22:46 #8
Jeg har direkte copy-paste det ind i kawa!
Hvor kommer Printable.PAGE_EXISTS fra ??? Jeg kan ikke finde den i hirakiet!!
Virker dit eksempel med JDK 1.2.1
???
Avatar billede paarse Nybegynder
01. maj 2001 - 16:34 #9
Jeg bruger godt nok jdk 1.3, men det burde nu virke... Printable.PAGE_EXISTS er en konstant i Printable interfacet.

Jeg prøver lige senere at compile koden med jdk 1.2.2 og vender så tilbage..
Avatar billede bassfucker Nybegynder
16. maj 2001 - 15:31 #10
Hejsa netrotten

Dette her kan måske bruges...

Det fungerer ti´l jdk 1.3, men jeg er næsten sikker på, at du også kan bruge det... :-)



import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.awt.geom.*;
import java.awt.print.*;

public class SimpleBook extends JPanel implements ActionListener{

  final static Color bg = Color.white;
    final static Color fg = Color.black;
    final static Color red = Color.red;
    final static Color white = Color.white;

    final static BasicStroke stroke = new BasicStroke(2.0f);
    final static BasicStroke wideStroke = new BasicStroke(8.0f);

    final static float dash1[] = {10.0f};
    final static BasicStroke dashed = new BasicStroke(1.0f,
                                                      BasicStroke.CAP_BUTT,
                            BasicStroke.JOIN_MITER,
                                                      10.0f, dash1, 0.0f);
    final static JButton button = new JButton(\"Print\");

  public SimpleBook() {
      setBackground(bg);
        button.addActionListener(this);
  }

  public void actionPerformed(ActionEvent e) {

    // Get a PrinterJob
    PrinterJob job = PrinterJob.getPrinterJob();
    // Create a landscape page format
    PageFormat landscape = job.defaultPage();
    landscape.setOrientation(PageFormat.LANDSCAPE);
    // Set up a book
    Book bk = new Book();
    bk.append(new PaintCover(), job.defaultPage());
    bk.append(new PaintContent(), landscape);
    // Pass the book to the PrinterJob
    job.setPageable(bk);
    // Put up the dialog box
    if (job.printDialog()) {
        // Print the job if the user didn\'t cancel printing
        try { job.print(); }
            catch (Exception exc) { /* Handle Exception */ }
    }
}

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        drawShapes(g2);
    }     

    static void drawShapes(Graphics2D g2){
        int gridWidth = 600 / 6;
        int gridHeight = 250 / 2;
       
        int rowspacing = 5;
        int columnspacing = 7;
        int rectWidth = gridWidth - columnspacing;
        int rectHeight = gridHeight - rowspacing;
       
        Color fg3D = Color.lightGray;
   
        g2.setPaint(fg3D);
        g2.drawRect(80, 80, 605 - 1, 265);
        g2.setPaint(fg);
           
        int x = 85;
        int y = 87;

   
        // draw Line2D.Double
        g2.draw(new Line2D.Double(x, y+rectHeight-1, x + rectWidth, y));
        x += gridWidth;
       
    Graphics2D temp = g2;
        // draw Rectangle2D.Double
        g2.setStroke(stroke);
        g2.draw(new Rectangle2D.Double(x, y, rectWidth, rectHeight));
        x += gridWidth;
       
        // draw  RoundRectangle2D.Double
        g2.setStroke(dashed);
        g2.draw(new RoundRectangle2D.Double(x, y, rectWidth,
                                            rectHeight, 10, 10));
        x += gridWidth;
       
        // draw Arc2D.Double
        g2.setStroke(wideStroke);
        g2.draw(new Arc2D.Double(x, y, rectWidth, rectHeight, 90,
                                135, Arc2D.OPEN));
        x += gridWidth;
       
        // draw Ellipse2D.Double
        g2.setStroke(stroke);
       
        g2.draw(new Ellipse2D.Double(x, y, rectWidth, rectHeight));
        x += gridWidth;
       
        // draw GeneralPath (polygon)
        int x1Points[] = {x, x+rectWidth, x, x+rectWidth};
        int y1Points[] = {y, y+rectHeight, y+rectHeight, y};
      GeneralPath polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD,
                                              x1Points.length);
        polygon.moveTo(x1Points[0], y1Points[0]);
        for ( int index = 1; index < x1Points.length; index++ ) {
            polygon.lineTo(x1Points[index], y1Points[index]);
        };
        polygon.closePath();
       
        g2.draw(polygon);

        // NEW ROW
        x = 85;
        y += gridHeight;
       
        // draw GeneralPath (polyline)
       
        int x2Points[] = {x, x+rectWidth, x, x+rectWidth};
        int y2Points[] = {y, y+rectHeight, y+rectHeight, y};
        GeneralPath polyline = new GeneralPath(GeneralPath.WIND_EVEN_ODD,
                                              x2Points.length);
        polyline.moveTo (x2Points[0], y2Points[0]);
      for ( int index = 1; index < x2Points.length; index++ ) {
            polyline.lineTo(x2Points[index], y2Points[index]);
        };
       
        g2.draw(polyline);
        x += gridWidth;
                                             
        // fill Rectangle2D.Double (red)
        g2.setPaint(red);
        g2.fill(new Rectangle2D.Double(x, y, rectWidth, rectHeight));
        g2.setPaint(fg);
        x += gridWidth;
       
        // fill RoundRectangle2D.Double
        GradientPaint redtowhite = new GradientPaint(x,y,red,x+rectWidth,y,white);
        g2.setPaint(redtowhite);
        g2.fill(new RoundRectangle2D.Double(x, y, rectWidth,
                                            rectHeight, 10, 10));
        g2.setPaint(fg);
        x += gridWidth;
       
        // fill Arc2D
        g2.setPaint(red);
        g2.fill(new Arc2D.Double(x, y, rectWidth, rectHeight, 90,
                                135, Arc2D.OPEN));
        g2.setPaint(fg);
        x += gridWidth;
           
        // fill Ellipse2D.Double
        redtowhite = new GradientPaint(x,y,red,x+rectWidth, y,white);
        g2.setPaint(redtowhite);
      g2.fill (new Ellipse2D.Double(x, y, rectWidth, rectHeight));
        g2.setPaint(fg);                     
        x += gridWidth;
        // fill and stroke GeneralPath
        int x3Points[] = {x, x+rectWidth, x, x+rectWidth};
        int y3Points[] = {y, y+rectHeight, y+rectHeight, y};
        GeneralPath filledPolygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD,
                                                    x3Points.length);
        filledPolygon.moveTo(x3Points[0], y3Points[0]);
        for ( int index = 1; index < x3Points.length; index++ ) {
            filledPolygon.lineTo(x3Points[index], y3Points[index]);
        };
        filledPolygon.closePath();
        g2.setPaint(red);
        g2.fill(filledPolygon);
        g2.setPaint(fg);
        g2.draw(filledPolygon);
    g2.setStroke(temp.getStroke());
    }



  public static void main(String[] args) {
        WindowListener l = new WindowAdapter() {
                public void windowClosing(WindowEvent e) {System.exit(0);}
                public void windowClosed(WindowEvent e) {System.exit(0);}
        };
        JFrame f = new JFrame();
        f.addWindowListener(l);
        JPanel panel = new JPanel();
        panel.add(button);
        f.getContentPane().add(BorderLayout.SOUTH, panel);
        f.getContentPane().add(BorderLayout.CENTER, new SimpleBook());
        f.setSize(775, 450);
        f.show();
  }

}

class PaintCover implements Printable {
  Font fnt = new Font(\"Helvetica-Bold\", Font.PLAIN, 48);

  public int print(Graphics g, PageFormat pf, int pageIndex)
        throws PrinterException {
    g.setFont(fnt);
    g.setColor(Color.black);
    g.drawString(\"Sample Shapes\", 100, 200);
    return Printable.PAGE_EXISTS;
  }
}

class PaintContent implements Printable {
  public int print(Graphics g, PageFormat pf, int pageIndex)
  throws PrinterException {
      SimpleBook.drawShapes((Graphics2D) g);
      return Printable.PAGE_EXISTS;

  }


}


Jakob
Avatar billede bassfucker Nybegynder
16. maj 2001 - 15:40 #11
Det drejer sig nemlig om, at anvende Printjob...

Men på suns tutorial, er der meget godt at hente.
http://java.sun.com/docs/books/tutorial/?frontpage-spotlight

Du kan også læse i den bog, der hedder SWING. Den har kapitler til både Udskrivning og 2DGraphics.


Der findes også et commercielt program, der efter sigende skulle gøre alt det udskrivningsprygl til en leg.

http://www.sitraka.com/software/jclass/jclasspagelayout.html

Pagelayout skulle være PÆNT nemt at bruge, men jeg har ikke selv prøvet det.
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