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"