Funktionen werden im Jar-File nicht ausgeführt

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Ich habe 2 Probleme beim ausführen meines Jar-Files:

1. Problem: Die Druckfunktion wird im Jar-File nicht ausgeführt. In meinem Editor JCreator schon.

Listener für die Schaltfläche Drucken

Code:
class druckenListener implements ActionListener 
		{
			
			public void actionPerformed(ActionEvent e) 
			{
                pj = PrinterJob.getPrinterJob();
                try 
                {
                    if (pj.printDialog()) 
                    {
                        paper = new Paper();
                        paper.setSize(594.936, 841.536); // Set to A4 size.
                        paper.setImageableArea(30, 30, 530, 780);//set margins
                        pageFormat = new PageFormat();
                        pageFormat.setPaper(paper);
                        size = reiter1.getSize();
                        //Größe der einzelnen "Reiter" ermitteln
                        if (tp.getSelectedIndex() == 0) 
                        {
                            size = reiter1.getSize();
                        } 
                        else if(tp.getSelectedIndex() == 1)
                        {
                            size = reiter2.getSize();
                        }
                        else if(tp.getSelectedIndex() == 2)
                        {
                            size = reiter3.getSize();
                        }
                        else if(tp.getSelectedIndex() == 3)
                        {
                            size = reiter4.getSize();
                        }
                        //1. Reiter drucken
                        reiter1.setSize(size); 
                        formular = new Formular(reiter1);
                        pj.setPrintable(formular, pageFormat);
                        pj.print();
                        //2. Reiter drucken
                        reiter2.setSize(size);
                        formular = new Formular(reiter2);
                        pj.setPrintable(formular, pageFormat);
                        pj.print();
                        //3. Reiter drucken
                        reiter3.setSize(size);
                        formular = new Formular(reiter3);
                        pj.setPrintable(formular, pageFormat);
                        pj.print();
                        //4. Reiter drucken
                        reiter4.setSize(size);
                        formular = new Formular(reiter4);
                        pj.setPrintable(formular, pageFormat);
                        pj.print();
                    }
                } 
                catch (PrinterException ex) 
                {
                    ex.printStackTrace();
                }
            } 
		}

Klasse Formular

Code:
/** Die Klasse Formular übernimmt die Aufgabe des Druckens**/
class Formular implements Printable 
{
    private Container container;
    private int index = -1;
    private Rectangle page = new Rectangle(0, 0, 0, 0);
    
    Formular(Container container) 
    {
    	this.container = container;
    }

    public int print(Graphics g, PageFormat pageFormat, int pageIndex) 
    {
        Graphics2D g2d = (Graphics2D) g;
        g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
        int iWidth = (int) pageFormat.getImageableWidth();
        int iHeight = (int) pageFormat.getImageableHeight();
        double scaleFactor = (double) iWidth / (double) container.getWidth();

        while (index < pageIndex) 
        {
            if (pageIndex > container.getHeight() * scaleFactor / iHeight) 
            {
                return NO_SUCH_PAGE;
            }
            page.y += page.height;
            page.width = (int) (iWidth / scaleFactor);
            page.height = (int) (iHeight / scaleFactor);
            index++;
        }

        g2d.scale(scaleFactor, scaleFactor);

        g2d.translate(0, -page.y);
        g2d.clip(page);
        container.print(g2d);

        return PAGE_EXISTS;
    }
}

2. Problem: bild.jpg wird nicht angezeigt. Ich habe meine Bilder im Ordner img/ liegen. Führe ich das Programm in der Entwicklungsumgebung aus, wird mir das Bild an der richtigen Stelle angezeigt. Sobald ich das Jar-File erzeugt habe und dieses ausführe, wird es nicht mehr ausgeführt. Das jar-File erzeuge ich wie folgt:

Code:
 jar -cfvm Programm.jar manifest.MV *.class org/ imgs/
 
Auf Resourcen im jar File greift man über den Class Loader zu (getClass().getResource.
Sollte das dein Problem nicht lösen, poste den Stacktrace.
 
@ Wildcard

Dieses Phänomen tritt nur innerhalb des jar-Files auf (keine Fehlermeldung). Innerhalb meines Entwicklungstools wird ordnungsgemäß gedruckt (ohne Fehlermeldung).

Ich kann es mals so beschreiben:

Ich starte das Jar-File, Druckauftrag wird gestartet und 4 von 4 Seiten werden gedruckt, aber immer nur der obere Rand und nicht die ganze Seite.

Ich starte die selbe Anwendung aus meiner Entwicklungsumgebung drucke und es werden die 4 Seiten ordnungsgemäß ohne Exception gedruckt. Ich verstehe das nicht.
 
Keine Fehlermeldung - auch wenn ich das Ding über Konsole starte oder einen Logger verwende. Er druck ja - nur nicht richtig. Er druckt nur den oberen Teil - und das auch nur bei einem bestimmten Drucker.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben