/ 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
flere af slagsen
Fra : def


Dato : 21-05-01 23:19

Jeg har flere spørgsmål og det ville være meget fint hvis der var nogen der
havde de relevante svar
1. Hvordan udskriver jeg fra en JEditorPane? Jeg bruger følgende stykke
kode:

public void print(){
PrintJob pjob = getToolkit().getPrintJob(new Frame(),"Printer", null);
if (pjob != null){
Graphics pg = pjob.getGraphics();
if (pg != null){
infoPane.printAll(pg);
pg.dispose(); // flush page
}
pjob.end();
}
}

og det fungerer sådanset fint, dvs. jeg får udskriften, men der mangler en
del. Udskriften er alt for stor så der kun udskrives den centrale. Jeg skal
vist fortælle compileren at min JEditorPane (eller rettere sagt indholdet)
skal tilpasses A4 format("formatteres"), men hvordan går jeg det?

2. Jeg har en JList og JTextArea og jeg vil gerne have, når jeg opretter
forbindelse til min database (oracle) hvor jeg bla. har en tabel med: id,
navn, efternavn, adr. telefon..., at jeg så indsætter navn og efternavn i
min JList og når brugeren så vælger et navn at der så vises de resterende
oplysninger (tlf, adr...) i denne JTextArea.
Hvordan indsætter jeg navn og efternavn i min JList? Og hvordan får jeg så
de øvrige oplysninger i min JTextArea når brugeren klikker på et navn og
efternavn? (det er lige meget om det er JTextArea elller noget andet, bare
de vises frem)

mvh Dejan




 
 
Lars Dam (22-05-2001)
Kommentar
Fra : Lars Dam


Dato : 22-05-01 09:19

On Tue, 22 May 2001 00:18:56 +0200, "def" <spades@worldonline.dk>
wrote:

>Jeg har flere spørgsmål og det ville være meget fint hvis der var nogen der
>havde de relevante svar
>1. Hvordan udskriver jeg fra en JEditorPane? Jeg bruger følgende stykke
>kode:
>
>public void print(){
> PrintJob pjob = getToolkit().getPrintJob(new Frame(),"Printer", null);
> if (pjob != null){
> Graphics pg = pjob.getGraphics();
> if (pg != null){

Umiddelbart vil jeg gætte på at du skal sætte din size på infoPane til
dit printJobs papirstørrelse. Men det vil blot 'vride' dit infoPane's
størrelse til et papir størrelse. - Det er sikkert fint nok, hvis det
bare drejer sig om et skærmdump.

> infoPane.printAll(pg);
> pg.dispose(); // flush page
> }
> pjob.end();
> }
> }

Hvis det derimod skal være en pæn udskrift du skal lave, må du på
arbejde, og selv 'tegne' indholdet på papiret med pg's tegne metoder.

>og det fungerer sådanset fint, dvs. jeg får udskriften, men der mangler en
>del. Udskriften er alt for stor så der kun udskrives den centrale. Jeg skal
>vist fortælle compileren at min JEditorPane (eller rettere sagt indholdet)
>skal tilpasses A4 format("formatteres"), men hvordan går jeg det?

>2. Jeg har en JList og JTextArea og jeg vil gerne have, når jeg opretter
>forbindelse til min database (oracle) hvor jeg bla. har en tabel med: id,
>navn, efternavn, adr. telefon..., at jeg så indsætter navn og efternavn i
>min JList og når brugeren så vælger et navn at der så vises de resterende
>oplysninger (tlf, adr...) i denne JTextArea.
>Hvordan indsætter jeg navn og efternavn i min JList? Og hvordan får jeg så
>de øvrige oplysninger i min JTextArea når brugeren klikker på et navn og
>efternavn? (det er lige meget om det er JTextArea elller noget andet, bare
>de vises frem)

For række du har i din database, skal du have en klasse der
repræsenterer rækken e.g:

class Plonk{
   String navn="";
   String efternavn="";
   String Adresse="";
   :
   : etc...
   :
}

Det du så gør, er at alle de 'plonk'er du læser fra databasen, smider
du ned som elementer i din JList.

For at få dem vist i din JList, er der to muligheder:

Den hurtige og grimme:

Overstyr toString() i plonk:

public String toString(){
   return navn + " " + efternavn;
}

Den lidt mere besværlige, men pæne og efter min mening den mest
korrekte:

Det er at lave en ListCellRenderer klasse til din JList som kan finde
ud af at vise et 'plonk' objekt pænt:

public class MyLCR extends JPanel implements ListCellRenderer{
   private JLabel navn = new JLabel();
   private JLabel efternavn = new JLabel();
   public MyLCR(){
      setLayout( new GridLayout(2,1) );
      add( navn );
      add( efternavn );
   }
   // listCellRenderer interface her
   public Component getListCelleRenderer( Object object, ... ){
      navn.setText( ((Plonk)object).navn );
      eftertnavn.setText( ((Plonk)object).navn );
      return this;
   }
}


Dette er taget frit fra hukommelsen, men slå ListCellRenderer op, og
eksperimenter lidt.


Næste punkt: Hvordan får du vist hele elementen fra listen i din
'textarea' eller hvad det nu er:

Simpelt: add en ListSelectionListener til din Jlist, og når der kommer
en event, så spørg din JList om den aktuelt valgte værdi - det objekt
du får tilbage, er en instans af 'Plonk', som du så kan aflæse værdier
i, og sætte i din textarea:

Plonk plonk = (Plonk)JList.getSelectedValue()
textarea.setText( plonk.navn + " " +plonk.efternavn + " " +
plonk.adresse );

Igen frit efter hukommelsen, men dette er princippet.


>
>mvh Dejan
>

God fornøjelse


vh. ld
--
"Time is the fire in which we burn"

spades (22-05-2001)
Kommentar
Fra : spades


Dato : 22-05-01 21:16

"Lars Dam" <lars_simple_spam_protection_dam@post2.tele.dk> skrev i en
meddelelse news:ke7kgtksrpf253v4ckkinssal7umhvgc54@4ax.com...
> >public void print(){
> > PrintJob pjob = getToolkit().getPrintJob(new Frame(),"Printer",
null);
> > if (pjob != null){
> > Graphics pg = pjob.getGraphics();
> > if (pg != null){
>
> Umiddelbart vil jeg gætte på at du skal sætte din size på infoPane til
> dit printJobs papirstørrelse. Men det vil blot 'vride' dit infoPane's
> størrelse til et papir størrelse. - Det er sikkert fint nok, hvis det
> bare drejer sig om et skærmdump.
> > infoPane.printAll(pg);
> > pg.dispose(); // flush page
> > }
> > pjob.end();
> > }
> > }
>
> Hvis det derimod skal være en pæn udskrift du skal lave, må du på
> arbejde, og selv 'tegne' indholdet på papiret med pg's tegne metoder.

Først: 100 tak for dit svar.
Npår du siger "tegne" indholdet, hvad mener du egentlig? I min JEditPane
(infoPane) er et stykke HTML som jeg bruger for at vise nogle relevante svar
fra databasen på en pæn måde. Er det noget med setPreferredSize() jeg skal
ordne? Eller er der nogle andre bedre metoder?

> For række du har i din database, skal du have en klasse der
> repræsenterer rækken e.g:
>
> class Plonk{
> String navn="";
> String efternavn="";
> String Adresse="";
> :
> : etc...
> :
> }
>
> Det du så gør, er at alle de 'plonk'er du læser fra databasen, smider
> du ned som elementer i din JList.

> For at få dem vist i din JList, er der to muligheder:
>
> Den hurtige og grimme:
>
> Overstyr toString() i plonk:
>
> public String toString(){
> return navn + " " + efternavn;
> }
>
> Den lidt mere besværlige, men pæne og efter min mening den mest
> korrekte:
>
> Det er at lave en ListCellRenderer klasse til din JList som kan finde
> ud af at vise et 'plonk' objekt pænt:
>
> public class MyLCR extends JPanel implements ListCellRenderer{
> private JLabel navn = new JLabel();
> private JLabel efternavn = new JLabel();
> public MyLCR(){
> setLayout( new GridLayout(2,1) );
> add( navn );
> add( efternavn );
> }
> // listCellRenderer interface her
> public Component getListCelleRenderer( Object object, ... ){
> navn.setText( ((Plonk)object).navn );
> eftertnavn.setText( ((Plonk)object).navn );
> return this;
> }
> }
>
>
> Dette er taget frit fra hukommelsen, men slå ListCellRenderer op, og
> eksperimenter lidt.

Jeg skal nok røve mig frem selvom jeg ikke har så meget tid tilbage til
denne "opgave". JEg har prøvet først med Arrays hvor jeg læste oplysningerne
fra DB som arrays men det virkede ad helvede til. Nu har jeg skrivet nogle
kode-stumper hvor jeg gemmer oplysningerne i en Vector, og det fungerer ok
hvad visningen i JListen angår, men det går ikke når jeg prøver at vise det
fulde indhold i min textarea.

> Næste punkt: Hvordan får du vist hele elementen fra listen i din
> 'textarea' eller hvad det nu er:
>
> Simpelt: add en ListSelectionListener til din Jlist, og når der kommer
> en event, så spørg din JList om den aktuelt valgte værdi - det objekt
> du får tilbage, er en instans af 'Plonk', som du så kan aflæse værdier
> i, og sætte i din textarea:
>
> Plonk plonk = (Plonk)JList.getSelectedValue()
> textarea.setText( plonk.navn + " " +plonk.efternavn + " " +
> plonk.adresse );
>
> Igen frit efter hukommelsen, men dette er princippet.

Takker. Det er da en fornøjelse at se at der er nogen der virkeligt gider
dele deres viden med andre (som mangler den))

mvh Dejan

> God fornøjelse
>
>
> vh. ld
> --
> "Time is the fire in which we burn"



Lars Dam (23-05-2001)
Kommentar
Fra : Lars Dam


Dato : 23-05-01 11:22

On Tue, 22 May 2001 22:15:37 +0200, "spades" <spades@worldonline.dk>
wrote:

>> Hvis det derimod skal være en pæn udskrift du skal lave, må du på
>> arbejde, og selv 'tegne' indholdet på papiret med pg's tegne metoder.
>
>Først: 100 tak for dit svar.
>Npår du siger "tegne" indholdet, hvad mener du egentlig? I min JEditPane
>(infoPane) er et stykke HTML som jeg bruger for at vise nogle relevante svar
>fra databasen på en pæn måde. Er det noget med setPreferredSize() jeg skal
>ordne? Eller er der nogle andre bedre metoder?

Med tegne indholdet mener jeg at du selv skal kalde e.g.
pg.drawString(...) for hver linje der skal printes. Men det er
tilsyneladende for meget at lave, når det drejer sig om html.

Men: Da din JEditPane (sikkert?) indgår i et skærmbillede, så bliver
det resizet efter dette. Prøve at lav et nyt JEditPane, som ikke er på
et skærmbillede, og resize det til dit papirs størrelse (kan aflæses i
printjob svjh.). Udskriv så dette JEditPane.

>>
>> Dette er taget frit fra hukommelsen, men slå ListCellRenderer op, og
>> eksperimenter lidt.
>
>Jeg skal nok røve mig frem selvom jeg ikke har så meget tid tilbage til
>denne "opgave". JEg har prøvet først med Arrays hvor jeg læste oplysningerne
>fra DB som arrays men det virkede ad helvede til. Nu har jeg skrivet nogle
>kode-stumper hvor jeg gemmer oplysningerne i en Vector, og det fungerer ok
>hvad visningen i JListen angår, men det går ikke når jeg prøver at vise det
>fulde indhold i min textarea.

Ok. Hvis du er under tidspres, så brug den første løsning jeg
skitserede med toString():


class plonk{
   String navn="";
   String Efternavn="";
   public String toString(){
      return navn+" "+efternavn;
   }
}
:
:
:
Vector vAll = new Vector;
while(more to read from db){
   Plonk plonk = new Plonk(..content from a row in db..);
   vAll.addElement(plonk);
}

JList.setElements(vAll); //vistnok
// toString() metoden i plonk vil vise de rette data
// i JList (da JList's default ListCellRenderer viser
// værdien for toString()), selvom det er plonk
// elementer der er i listen
:
:
:
Og så:
>> Simpelt: add en ListSelectionListener til din Jlist, og når der kommer
>> en event, så spørg din JList om den aktuelt valgte værdi - det objekt
>> du får tilbage, er en instans af 'Plonk', som du så kan aflæse værdier
>> i, og sætte i din textarea:
>>
>> Plonk plonk = (Plonk)JList.getSelectedValue()
>> textarea.setText( plonk.navn + " " +plonk.efternavn + " " +
>> plonk.adresse );

>Takker. Det er da en fornøjelse at se at der er nogen der virkeligt gider
>dele deres viden med andre (som mangler den))

Velbekomme. Det er sådanne ting man risikerer at bruge vældig masse
tid på fordi man ikke lige præcis ved hvordan det fungerer.

Hvis jeg kan få lov til (og har tid til det) til at skitsere en
principiel løsning, og folk så selv laver det, istedet for at man
forventer at det bliver lavet for en, vil jeg gerne bruge tid på at
svare

vh. ld
--
"Time is the fire in which we burn"

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

Månedens bedste
Årets bedste
Sidste års bedste