/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
printe JPanel
Fra : Thomas Bendsen


Dato : 07-03-03 21:53

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

 
 
Ulrik Magnusson (07-03-2003)
Kommentar
Fra : Ulrik Magnusson


Dato : 07-03-03 23:27

Thomas Bendsen wrote:

> 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????

Måske at panelet ikke har en størrelse, hvis det ikke er tilføjet til
en container?

Ulrik Magnusson


Thomas Bendsen (08-03-2003)
Kommentar
Fra : Thomas Bendsen


Dato : 08-03-03 18:04

On Fri, 07 Mar 2003 23:26:50 +0100, Ulrik Magnusson <ulrikm@yahoo.com> wrote:

> Thomas Bendsen wrote:
>
>> 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????
>
> Måske at panelet ikke har en størrelse, hvis det ikke er tilføjet til
> en container?
>
> Ulrik Magnusson
>
Jeg tror at du er på sporet. Hvis jeg kalder f.eks.
pane.setSize(new Dimension(100,100))
inden jeg forsøger at printe "pane" så bliver der faktisk printet noget.
Men kun selve panelet. Ikke eventuelle underkomponenter (eller hvad det nu
hedder). Og der er jo ikke så meget ved kun at få en grå baggrund. Jeg har
også forsøgt at kalde
pane.validate()
men det ændrer ikke noget.

Det må da kunne lade sig gøre at printe swingkomponenter uden at tegne dem
på skærmen!!

MVH Thomas Bendsen

Dejan (15-03-2003)
Kommentar
Fra : Dejan


Dato : 15-03-03 22:11

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
newsrlomx0ve6nllbr@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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste