Det er et stykke tid siden jeg har lavet noget der minder om din
applikation, men jeg ved at det er lidt "svært" at printe Swing-
komponenter.. Men her er der et stykke kode der måske kan hjælpe:
JEditorPane infoPane = new JEditorPane();
....
public void print() {
PrintJob pjob = getToolkit().getPrintJob(new Frame(), "Printer", null);
if(pjob !=null){
Graphics pg = pjob.getGraphics();
if (pg !=null) {
infoPane.setSize(pjob.getPageDimension());
infoPane.printAll(pg);
pg.dispose();
}
pjob.end();
}
Kernen er metoden "infoPane.setSize(pjob.getPageDimension())"
Håber det hjælper
mvh Dejan
"Thomas Bendsen" <thomas_bendsen@stofanet.dk> skrev i en meddelelse
news
rlomx0ve6nllbr@news.stofanet.dk...
> Hej
>
> Her på det sidste har jeg leget lidt med at printe, og jeg tror også at
jeg
> har fået nogenlunde styr på det. Men jeg har et enkelt problem. Jeg vil
> gerne printe en JComponent. Mere præcist et JPanel indeholdende nogle
> labels o.s.v.
>
> Min kode er som følger:
>
> public class PrintPane extends JPanel implements Printable {
>
> public PrintPane {
> //tilføj nogle ting til panelet
> }
>
> public int print(Graphics gr,PageFormat pageFormat,int pageIndex) {
> if (pageIndex > 0) {
> return Printable.NO_SUCH_PAGE;
> }
> else {
> Graphics2D g2d = (Graphics2D)gr;
> g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
> this.print(g2d);
> return Printable.PAGE_EXISTS;
> }
> }
>
> }
>
> Problemet er at når jeg forsøger at printe dette panel kommer der kun
noget
> ud på papiret hvis panelet er tegnet på skærmen (i så fald er udskriften
> helt som ønsket). Hvis panelet ikke er tegnet på skærmen er papiret
blankt.
> Hvorfor????
> Hvis jeg udskifter linien this.print(g2d)
> med f.eks.
> g2d.drawString("hej",10,10);
> virker det helt som forventet.
>
> Er der nogen der kan forklare mig hvad jeg gør galt?
>
> MVH
> Thomas Bendsen