Ohjelmointi

Java-tulostus, osa 1

Edellinen 1 2 Sivu 2 Sivu 2/2

Esitysmallit

Javassa on kaksi tulostusmallia: Tulostettava työpaikat ja Sivutettava työpaikkoja.

Tulostettavat

Tulostettava työt ovat yksinkertaisempia kahdesta tulostusmallista. Tämä malli käyttää vain yhtä PagePainter koko asiakirjalle. Sivut renderöidään peräkkäin alkaen sivun nollasta. Kun viimeinen sivu tulostuu, PagePainter täytyy palauttaa NO_SUCH_PAGE arvo. Tulostusalijärjestelmä pyytää aina sovellusta renderoimaan sivut peräkkäin. Esimerkiksi, jos sovellustasi pyydetään renderöimään sivut viisi seitsemän, tulostusalijärjestelmä pyytää kaikkia sivuja seitsemänteen sivuun asti, mutta tulostaa vain viisi, kuusi ja seitsemän sivua. Jos sovelluksesi näyttää tulostusvalintaikkunan, tulostettavien sivujen kokonaismäärä ei tule näkyviin, koska tätä mallia käyttävän asiakirjan sivujen lukumäärää ei voida tietää etukäteen.

Voidaan lukea

Sivutettava työpaikat tarjoavat enemmän joustavuutta kuin Tulostettava työpaikkoja, koska jokainen sivu a Sivutettava työ voi sisältää eri asettelun. Sivutettava työpaikkoja käytetään useimmiten Kirjas, kokoelma sivuja, joilla voi olla erilainen muoto. Selitän Kirja luokan hetkessä.

A Sivutettava työpaikalla on seuraavat ominaisuudet:

  • Jokaisella sivulla voi olla oma maalari. Voit esimerkiksi saada maalarin toteuttamaan kansilehden tulostamisen, toisen taidemaalarin sisällysluettelon ja kolmannen koko asiakirjan.
  • Voit asettaa eri sivumuodon jokaiselle kirjan sivulle. Jonkin sisällä Sivutettava työ, voit sekoittaa pysty- ja vaakasivuja.
  • Tulostusalijärjestelmä saattaa pyytää sovellustasi tulostamaan sivuja peräkkäin, ja jotkin sivut voidaan ohittaa tarvittaessa. Jälleen, sinun ei tarvitse huolehtia tästä niin kauan kuin voit toimittaa minkä tahansa sivun asiakirjasi pyynnöstä.
  • Sivutettava työn ei tarvitse tietää kuinka monta sivua asiakirjassa on.

Kirjat

Myös uusi, koska versio 1.2 on Kirja luokassa. Tämän luokan avulla voit luoda monisivuisia asiakirjoja. Jokaisella sivulla voi olla oma muoto ja oma maalari, mikä antaa sinulle joustavuutta luoda hienostuneita asiakirjoja. Koska Kirja luokka toteuttaa Sivutettava käyttöliittymä, voit toteuttaa oman Kirja luokka kun tarjotaan Kirja luokassa puuttuu tarvitsemasi ominaisuudet.

A Kirja luokka edustaa kokoelmaa sivuja. Kun se luotiin ensimmäisen kerran, Kirja esine on tyhjä. Jos haluat lisätä sivuja, käytä vain yhtä näistä kahdesta liitä () menetelmiä (katso lisätietoja tämän luokan selityksestä API-osiosta). Tämän menetelmän parametrit ovat PageFormat objekti, joka määrittelee sivun fyysiset ominaisuudet, ja a PagePainter esine, joka toteuttaa Tulostettava käyttöliittymä. Jos et tiedä asiakirjasi sivumäärää, välitä vain Tuntematon_NUMBER_OF_PAGES arvo liitä () menetelmä. Tulostinjärjestelmä löytää automaattisesti sivumäärän soittamalla kaikille kirjan sivumaalareille, kunnes se saa a NO_SUCH_PAGE arvo.

API-määritelmä

Teoria ja käytäntö kohtaavat tässä osiossa. Edellisissä osioissa opimme sivurakenteesta, mittayksiköistä ja mallinnusmalleista. Tässä osassa tarkastellaan Java-tulostusliittymää.

Kaikki tulostukseen vaaditut luokat sijaitsevat java.awt.print paketti, joka koostuu kolmesta rajapinnasta ja neljästä luokasta. Seuraavissa taulukoissa määritetään tulostuspaketin luokat ja käyttöliittymät.

NimiTyyppiKuvaus
PaperiLuokkaTämä luokka määrittää sivun fyysiset ominaisuudet.
PageFormatLuokkaPageFormat määrittää sivun koon ja suunnan. Siinä määritetään myös mikä Paperi käyttää sivun hahmontamiseen.
TulostinTyöLuokka

Tämä luokka hallinnoi tulostustyötä. Sen tehtäviin kuuluu tulostustyön luominen, tulostusvalintaikkunan näyttäminen tarvittaessa ja asiakirjan tulostaminen.

KirjaLuokka

Kirja edustaa asiakirjaa. A Kirja esine toimii sivujen kokoelmana. Sivut sisältyvät Kirja voi olla samanlainen tai erilainen muoto ja käyttää erilaisia ​​maalareita.

SivutettavaKäyttöliittymäA Sivutettava toteutus edustaa tulostettavia sivuja. Sivutettava objekti palauttaa joukon sivujen kokonaismäärän sekä PageFormat ja Tulostettava määritetylle sivulle. Kirja luokka toteuttaa tämän käyttöliittymän.
TulostettavaKäyttöliittymäSivumaalarin on toteutettava Tulostettava käyttöliittymä. Tässä käyttöliittymässä on vain yksi menetelmä, Tulosta().
TulostingrafiikkaKäyttöliittymä Grafiikka object toteuttaa tämän käyttöliittymän. Tulostingrafiikka tarjoaa getPrinterJob () tapa hankkia tulostustyö, joka suoritti tulostusprosessin.

Sivutettava käyttöliittymä

Sivutettava käyttöliittymä sisältää kolme tapaa:

Menetelmän nimiKuvaus
int getNumberOfPages ()Palauttaa asiakirjan sivujen määrän.
PageFormat getPageFormat (int pageIndex)Palauttaa sivun PageFormat määritelty pageIndex.
Tulostettava getPrintable (int pageIndex)Palauttaa Tulostettava ilmentymä, joka on vastuussa pageIndex.

Tulostettava käyttöliittymä

Tulostettava käyttöliittymässä on yksi menetelmä ja kaksi arvoa:

NimiTyyppiKuvaus
int-tulostus (grafiikka, PageFormat pageFormat, int pageIndex)Menetelmä

Pyytää, että grafiikka käsittelee annettua sivumuotoa renderöimällä määritetyn sivun.

NO_SUCH_PAGEArvoTämä on vakio. Palauta tämä arvo osoittamaan, että tulostettavia sivuja ei ole enää.
PAGE_EXISTSArvo Tulosta() method palaa PAGE_EXISTS. Se osoittaa, että sivu välitettiin parametrina Tulosta() on hahmonnettu ja on olemassa.

Jokaisen sivumaalarin on toteutettava Tulostettava käyttöliittymä. Koska toteuttamiseen on vain yksi menetelmä, sivumaalareiden luominen saattaa tuntua helpolta. Muista kuitenkin, että koodisi on kyettävä renderöimään kaikki sivut järjestyksessä tai poissa järjestyksestä.

Siihen on kolme parametria Tulosta()mukaan lukien Grafiikka, joka on sama luokka, jota käytettiin piirtämään ruudulle. Koska Grafiikka luokka toteuttaa Tulostin Graafinen käyttöliittymän, voit hankkia TulostinTyö joka suoritti tämän tulostustyön. Jos sivun asettelu on monimutkainen ja vaatii joitain kehittyneitä piirustusominaisuuksia, voit suoratoistaa sen Grafiikka parametrin a Grafiikka2D esine. Tämän jälkeen sinulla on pääsy koko Java 2D -sovellusliittymään.

Ennen kuin aloitat Grafiikka esine, huomaa, että koordinaatteja ei käännetä tulostusalueen vasempaan yläkulmaan. Katso kuvasta 3 oletussijainnin sijainti.

(0, 0) näkyy tulostimen marginaalien vasemmassa yläkulmassa. Jos haluat tulostaa 1 x 1 tuuman suorakulmion, 1 tuuman sekä ylä- että vasemmasta marginaalista, käytä seuraavaa koodia:

1: julkinen int-tulostus (grafiikkagrafiikka, PageFormat pageFormat, int pageIndex) {2: Graphics2D graphics2D = (Graphics2D) -grafiikka; 3: Suorakulmio2D.Double suorakulmio = uusi Suorakulmio2D.Double (); 4: suorakulmio.setRect (pageFormat.getImageableX () + 72, 5: pageFormat.getImageableY () + 72, 6: 72, 7: 72); 8: graphics2D.draw (suorakulmio); 9: paluu (PAGE_EXISTS); }

Edellisestä esimerkistä näemme, että suorakulmion alkuperä on käännettävä manuaalisesti, jotta se tulostuu tulostettavan alueen yläosaan kuten kuvassa 1. Koodin yksinkertaistamiseksi voimme kääntää koordinaatit kerran ja käyttää (0, 0 ) tulostettavan alueen alkuperänä. Muuttamalla edellistä esimerkkiä saamme:

1: julkinen int-tulostus (grafiikkagrafiikka, PageFormat pageFormat, int pageIndex) {2: Graphics2D graphics2D = (Graphics2D) -grafiikka; 3: graphics2D.translate (pageFormat.getImageableX (), pageFormat.getImageableY ()); 4: Suorakulmio2D.Double suorakulmio = uusi Suorakulmio2D.Double (); 5: suorakulmio.setRect (72, 72, 72, 72); 6: graphics2D.draw (suorakulmio); 7: paluu (PAGE_EXISTS); 8:}

Käyttämällä Kääntää() rivillä 3, voimme kääntää koordinaatit ja asettaa alkuperämme (0, 0) tulostusalueen yläosaan. Tästä lähtien koodia yksinkertaistetaan.

PrinterGraphics-käyttöliittymä

Tulostimen graafinen suunnittelu käyttöliittymä koostuu yhdestä menetelmästä:

Menetelmän nimiKuvaus
PrinterJob getPrinterJob ()Palauttaa TulostinTyö tälle renderöintipyynnölle ja sen toteuttaa Grafiikka luokassa

Paperiluokka

Kahdeksan menetelmää muodostavat Paperi luokka:

Menetelmän nimiKuvaus
kaksinkertainen getHeight ()Tämä menetelmä palauttaa sivun fyysisen korkeuden pisteinä (1 tuuma = 72 pistettä). Jos esimerkiksi tulostat letter-kokoiselle sivulle, palautusarvo on 792 pistettä eli 11 tuumaa.
kaksinkertainen getImageableHeight ()Tämä menetelmä palauttaa sivun kuviteltavan korkeuden. Kuviteltava korkeus on tulostusalueen korkeus, johon voit piirtää. Katso kuvasta 1 graafinen näkymä kuviteltavasta alueesta.
kaksinkertainen getImageableWidth ()Tämä menetelmä palauttaa sivun kuviteltavan leveyden (tulostusalueen leveyden, johon voit piirtää). Katso kuvasta 1 graafinen näkymä kuviteltavasta alueesta.
kaksinkertainen getImageableX ()Tämä menetelmä palauttaa kuvattavan alueen x-alkuperän. Koska marginaaleille ei ole tukea, paluuarvo edustaa vasenta marginaalia.
kaksinkertainen getImageableY ()Tämä menetelmä palauttaa kuviteltavan alueen y-alkuperän. Tästä menetelmästä palautettu arvo vastaa ylärajaa.
kaksinkertainen getWidth ()Tämä menetelmä palauttaa sivun fyysisen leveyden pisteinä. Jos tulostat letter-kokoiselle paperille, leveys on 812 tuumaa eli 612 pistettä.
void setImageableArea (kaksinkertainen x, kaksinkertainen y, kaksinkertainen leveys, kaksinkertainen korkeus)Tämä menetelmä määrittää kuviteltavan alueen ja määrittää sivun marginaalit. Itse asiassa API ei tarjoa menetelmää marginaalien asettamiseksi nimenomaisesti; sinun on laskettava ne itse.
void setSize (kaksinkertainen leveys, kaksinkertainen korkeus)Tämä menetelmä määrittää fyysisen sivun koon. Määritä 8,5 x 11 tuuman arkki antamalla 612 ja 792 pistettä. Huomaa, että oletuskoko on KIRJE.

Ennen kuin siirrymme seuraavaan osaan, muista Paperi luokassa määrittelee sivun fyysiset ominaisuudet. PageFormat luokassa edustaa kaikki sivun ominaisuudet, kuten sivun suunta, koko ja paperityyppi. Tämä luokka välitetään aina parametrina Tulostettava käyttöliittymän Tulosta() menetelmä. Käyttää Paperi saadaksesi kuviteltavan alueen sijainnin, koon ja sivun suunnan yhdessä muunnosmatriisin kanssa.

PageFormat-luokka

PageFormat koostuu 12 menetelmästä:

Menetelmän nimiKuvaus
kaksinkertainen getHeight ()Tämä menetelmä palauttaa sivun fyysisen korkeuden pisteinä (1 tuuma = 72 pistettä). Jos sivusi mitat ovat 8,5 x 11 tuumaa, palautusarvo on 792 pistettä eli 11 tuumaa.
kaksinkertainen getImageableHeight ()Tämä menetelmä palauttaa sivun kuviteltavan korkeuden, joka on tulostusalueen korkeus, jolle voit piirtää. Katso kuvasta 1 graafinen näkymä kuviteltavasta alueesta.
kaksinkertainen getImageableWidth ()Tämä menetelmä palauttaa sivun kuviteltavan leveyden - tulostusalueen leveyden, johon voit piirtää. Kuva 1 kuvaa graafisen kuvan kuviteltavasta alueesta.
kaksinkertainen getImageableX ()Tämä menetelmä palauttaa kuvattavan alueen x-alkuperän.
kaksinkertainen getImageableY ()Tämä menetelmä palauttaa kuviteltavan alueen y-alkuperän.
kaksinkertainen getWidth ()Tämä menetelmä palauttaa sivun fyysisen leveyden pisteinä. Jos tulostat letter-kokoiselle paperille, leveys on 812 tuumaa eli 612 pistettä.
kaksinkertainen getHeight ()Tämä menetelmä palauttaa sivun fyysisen korkeuden pisteinä. Esimerkiksi letter-kokoisen paperin korkeus on 11 tuumaa eli 792 pistettä.
kaksinkertainen [] getMatrix ()Tämä menetelmä palauttaa muunnosmatriisin, joka muuntaa käyttäjän tilan pyydettyyn sivun suuntaan. Palautusarvo on AffineTransform rakentaja.
int getOrientation ()Tämä menetelmä palauttaa sivun suunnan joko MUOTOKUVA tai MAISEMA.
void setOrientation (int-suunta)Tämä menetelmä määrittää sivun suunnan vakioiden avulla MUOTOKUVA ja MAISEMA.
Paperi getPaper ()Tämä menetelmä palauttaa Paperi sivumuotoon liittyvä objekti. Katso edellisestä osiosta kuvaus Paperi luokassa.
void setPaper (paperipaperi)Tämä menetelmä asettaa Paperi objekti, jota PageFormat luokassa. PageFormat on oltava pääsy fyysisiin sivun ominaisuuksiin tämän tehtävän suorittamiseksi.

Tämä päättää sivuluokkien kuvauksen. Seuraava luokka, jota tutkimme, on TulostinTyö.

PrinterJob-luokka

TulostinTyö luokka ohjaa tulostusprosessia. Se voi sekä välittää että hallita tulostustyötä. Alla on luokan määritelmä:

Menetelmän nimiKuvaus
abstrakti void perua ()Tämä menetelmä peruuttaa nykyisen tulostustyön. Voit vahvistaa peruutuksen isCancel () menetelmä.
abstrakti looginen arvo onPeruutettu ()Tämä menetelmä palauttaa arvon tosi, jos työ peruutetaan.
PageFormat defaultPage ()Tämä menetelmä palauttaa TulostinTyö.
abstrakti PageFormat defaultPage (PageFormat-sivu)Tämä menetelmä kloonaa PageFormat välittää parametrit ja muokkaa kloonia oletusarvon luomiseksi PageFormat.
tiivistelmä int getCopies ()Tämä menetelmä palauttaa kopioiden määrän, jonka tulostustyö tulostaa.
abstrakti void setCopies (int-kopiot)Tämä menetelmä määrittää työn tulostettavien kopioiden määrän. Huomaa, että jos näytät tulostusvalintaikkunan, käyttäjät voivat muuttaa kopioiden määrää (katso pageDialog menetelmä).
abstrakti merkkijono getJobName ()Tämä menetelmä palauttaa työn nimen.
staattinen tulostinJob getPrinterJob ()Tämä menetelmä luo ja palauttaa uuden TulostinTyö.
abstrakti merkkijono getUserName ()Tämä menetelmä palauttaa tulostustyöhön liittyvän käyttäjänimen.
tiivistelmä PageFormat pageDialog (PageFormat page)Tämä menetelmä näyttää valintaikkunan, jonka avulla käyttäjä voi muokata PageFormat. PageFormat, syötetty parametreina, asettaa valintaikkunan kentät. Jos käyttäjä peruuttaa valintaikkunan, sitten alkuperäinen PageFormat palautetaan. Mutta jos käyttäjä hyväksyy parametrit, niin uusi PageFormat luodaan ja palautetaan. Koska se ei näytä samoja parametreja kaikissa käyttöjärjestelmissä, sinun on oltava varovainen käyttäessäsi pageDialog.
abstrakti void setPageable (sivutettava asiakirja)Tämä menetelmä kyselee asiakirjaa saadakseen sivujen kokonaismäärän. Sivutettava palauttaa myös PageFormat ja Tulostettava objekti jokaiselle sivulle. Ks Sivutettava käyttöliittymä lisätietoja varten.
abstrakti void set Tulostettava (Tulostettava maalari)Tämä menetelmä asettaa Taidemaalari esine, joka tekee tulostettavat sivut. A Taidemaalari objekti on objekti, joka toteuttaa Tulostettava luokka ja sen Tulosta() menetelmä.
abstrakti void set Tulostettava (Tulostettava maalari, PageFormat-muoto)Tämä menetelmä suorittaa samat tehtävät kuin abstrakti void set Tulostettava (Tulostettava maalari), paitsi että toimitat PageFormat että Taidemaalari käyttää. Kuten on määritelty Tulostettava käyttöliittymä, Tulosta() menetelmä läpäisee a PageFormat objekti ensimmäisenä parametrina.
abstrakti tyhjä tulosta ()Tämä menetelmä tulostaa asiakirjan. Se itse asiassa kutsuu Tulosta() menetelmä Taidemaalari aiemmin määritetty tähän tulostustyöhön.
abstrakti void setJobName (Merkkijono jobName)Tämä menetelmä määrittää tulostustyön nimen.
tiivistelmä looginen tulosteDialog ()Tämä menetelmä näyttää tulostuksen valintaikkunan, jonka avulla käyttäjä voi muuttaa tulostusparametreja. Huomaa, että tämän vuorovaikutuksen tulosta ei palauteta ohjelmaasi. Sen sijaan se välitetään vertaiskäyttöjärjestelmälle.
abstrakti PageFormat validatePage (PageFormat -sivu)Tämä menetelmä vahvistaa PageFormat syötetty parametreihin. Jos tulostin ei voi käyttää PageFormat toimittamasi, sitten uusi tulostimen mukainen tuote palautetaan.

Kirjatunti

Seitsemän menetelmää muodostavat Kirja luokka:

>

Menetelmän nimiKuvaus
void append (Tulostettava maalari, PageFormat-sivu)Tämä menetelmä liittää sivun Kirja. taidemaalari ja PageFormat tälle sivulle välitetään parametreina.
void append (Tulostettava maalari, PageFormat-sivu, int numPages)Tämä menetelmä suorittaa samat tehtävät kuin void append (Tulostettava maalari, PageFormat-sivu), paitsi että määrität sivumäärän.
int getNumberOfPages ()Tämä menetelmä palauttaa sivun lukumäärän Kirja.
PageFormat getPageFormat (int pageIndex)Tämä menetelmä palauttaa PageFormat tietyn sivun objekti.
Tulostettava getPrintable (int pageIndex)Tämä menetelmä palauttaa taidemaalari tietylle sivulle.
void setPage (int pageIndex, tulostettava maalari, PageFormat -sivu)Tämä menetelmä asettaa taidemaalari ja PageFormat tietylle sivulle, joka on jo kirjassa.

Tulostusresepti

Tulostamisen resepti on hyvin yksinkertainen. Luo ensin TulostinTyö esine:

PrinterJob printJob = PrinterJob.getPrinterJob ();

Seuraavaksi käyttämällä setTulostettava () menetelmä TulostinTyö, määritä Taidemaalari vastustaa TulostinTyö. Huomaa, että a Taidemaalari esine on sellainen, joka toteuttaa Tulostettava käyttöliittymä.

printJob.setPrintable (Maalari);

Tai voit asettaa PageFormat kanssa Taidemaalari :

printJob.setPrintable (Maalari, pageFormat);

Lopuksi Taidemaalari objektin on toteutettava Tulosta() menetelmä:

public int print (grafiikka g, PageFormat pageFormat, int sivu)

Tässä ensimmäinen parametri on grafiikkakahva, jota käytetään sivun renderointiin, pageFormat on nykyisen sivun muoto ja viimeinen parametri on renderöitävä sivunumero.

Siinä kaikki siinä on - yksinkertaista tulostusta varten.

Johdanto kehykseen

Tässä sarjassa rakennettava tulostuskehys on täysin riippumaton Java-tulostus-sovellusliittymästä. Se mahdollistaa suuremman joustavuuden eri tuotosten tuottamisessa.Sen rakenteen avulla voit luoda asiakirjoja, sivuja ja tulostaa objekteja. Voit lisätä tulostettuja objekteja sivulle samalla, kun lisäät sivuja asiakirjaan. Tämän rakenteen avulla voit helposti viedä vientiominaisuudet PDF- tai HTML-tiedostoihin tai tulostaa suoraan tulostimelle käyttämällä tulostusliittymää. Mutta kehyksen päätavoitteena on yksinkertaistaa painettujen asiakirjojen luomista. Kun tulostat tulostusliittymän avulla, päädyt vain graafiseen kankaaseen, johon voit piirtää. Se ei käsittele kappaleiden, kuvien, piirustusten, grafiikan, taulukoiden tai juoksevien otsikoiden ja alatunnisteiden käsitteitä. Koska sinun on laskettava (x, y) alkuperä, tulostusalueen leveys ja korkeus, marginaalien asettaminen on työlästä. Tulostuskehyksemme korjaa kaikki nämä heikkoudet.

Johtopäätös

Tässä ensimmäisessä osassa käsiteltiin paljon maata. Tarkastelimme mittayksiköitä, sivun rakennetta, kahta renderöintimallia (Sivutettava ja Tulostettava) ja Kirjat, ja teimme lopuksi yksityiskohtaisen selityksen tulostuksen sovellusliittymästä. Ensi kuussa keskitymme ensisijaisesti koodiin, koska käytämme kaikkea käytännössä. Tarkastelemme myös ongelmia, joita syntyy tulostettaessa useille alustoille. Tulevaisuudessa osaan 3 selitän yksityiskohtaisesti kehyksen suunnittelun ja toteutuksen.

Jean-Pierre Dube on riippumaton Java-konsultti. Hän perusti Infocomin vuonna 1988. Sittemmin Infocom on kehittänyt räätälöityjä sovelluksia muun muassa valmistuksessa, asiakirjojen hallinnassa ja laajamittaisessa sähköjohdon hallinnassa. Jean-Pierrellä on laaja ohjelmointikokemus C-, Visual Basic- ja Java-ohjelmissa; jälkimmäinen on nyt kaikkien uusien projektien ensisijainen kieli. Hän omistaa tämän sarjan äidilleen, joka kuoli hänen kirjoittaessaan tätä artikkelia.

Lisätietoja tästä aiheesta

  • "Java-tulostus", Jean-Pierre Dubé (JavaWorld)
  • Osa 1: Tutustu Java-tulostusmalliin (20. lokakuuta 2000)
  • Osa 2: Tulosta ensimmäinen sivu ja renderoi monimutkaiset asiakirjat (1.12.2000)
  • Osa 3: Jean-Pierre Dubé esittelee tulostuskehyksen, joka toimii Java Print -sovellusliittymän päällä (5. tammikuuta 2001)
  • Osa 4: Koodaa tulostuskehys
  • (2. helmikuuta 2001)
  • Osa 5: Tutustu tulostuskehyksen tukiluokkiin
  • (2. maaliskuuta 2001)
  • Löydät tonnia kirjoja, jotka kattavat Java AWT: n, mutta yksikään ei käsittele tätä aihetta tämän kirjan laajuudessa. Jos kirjoitat käyttöliittymiä, sinulla on oltava tämä kirja tietokoneen vieressä: Graafinen Java 2, JFCAWT: n hallinta, osa 1, David M.Geary (Prentice Hall, 1998)

    //www.amazon.com/exec/obidos/ASIN/0130796662/javaworld

  • Tämä kirja oli hyödyllinen, kun Java 1.1 tuli ulos, ja se puhui ensimmäisenä Java-tulostuksesta: Siirtyminen Java 1.0: sta Java 1.1: een, Daniel I.Joshi ja Pavel A.Vorobiev (Ventana Communications Group, 1997)

    //www.amazon.com/exec/obidos/ASIN/1566046866/javaworld

  • Todennäköisesti paras Java 2D -kirja, tämä kirja kattaa kaikki 2D-sovellusliittymän näkökohdat ja tarjoaa myös Grafiikka kehys edistyneille 2D-sävellyksille: Java 2D API -grafiikka, Vincent J.Hardy (Prentice Hall, 1999)

    //www.amazon.com/exec/obidos/ASIN/0130142662/javaworld

  • Erinomainen esittely Java 2D -sovellusliittymälle "Aloittaminen Java 2D: llä", Bill Day (JavaWorld, Heinäkuu 1998)

    //www.javaworld.com/javaworld/jw-07-1998/jw-07-media.html

Tämän tarinan "Printing in Java, Part 1" julkaisi alun perin JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found