+ All Categories
Home > Documents > laborator15 -Java

laborator15 -Java

Date post: 25-Feb-2018
Category:
Upload: bredtm
View: 254 times
Download: 0 times
Share this document with a friend

of 23

Transcript
  • 7/25/2019 laborator15 -Java

    1/23

    TEHNOLOGII JAVA

    PENTRU DEZVOLTAREA APLICAIILORLUCRARE DE LABORATOR 15

    JTree. JTable. Meniuri. JToolBar

    I.

    SCOPUL LUCRRII

    Lucrarea de fa are rolul de a prezenta i familiariza studentul cu modul de construire aunei interfee grafice utilizator folosind pachetul de clase javax.swing. Se vor prezenta ctevacomponente vizuale utile, mpreuncu modul de creare i utilizare a acestora.

    La sfritul acestei lucrri, studentul va avea posibilitatea sscrie programe Java n care sutilizeze noiunile nvate.

    II.

    NOIUNI TEORETICE

    1. JTree

    Vezi noiunile teoretice prezentate la curs.Sconsiderm urmtorul exemplu - o instanJTreeconinnd setul complet de cri al

    unui pachet de cri de joc. S observm utilizarea clasei DefaultMutableTreeNode, carereprezint un nod cu scop general al arborelui. Fiecare nod fiu este inserat n nodul p rinteutilizndu-se metoda add(), i fiecare nod fiu poate fi la rndul su nod printe pentru alte noduri.

    Rdcina este un nod special pentru ceste printele ultim al tuturor celorlalte noduri din arbore.Nodul rdcineste inserat n modelul de date al arborelui, care pentru exemplul nostru este oinstana clasei DefaultTreeModel.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. t r ee. *;cl ass Tree ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vat e J Tr ee t r ee;

    pr i vat e J Scrol l Pane scr ol l Pane;publ i c Tr ee( ){set Ti t l e( "Mor e Advanced Tr ee Appl i cat i on" ) ;set Si ze( 300, 100 ) ;setBackgr ound( Col or . gr ay ) ;/ / Cr eeaza un panou pent r u a st oca t oat e cel el al t e component et opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;

    1

  • 7/25/2019 laborator15 -Java

    2/23

    get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza dat el e pent r u ar bor eDef aul t Mutabl eTr eeNode r oot = new Def aul t Mutabl eTr eeNode( "Deck" ) ;Def aul t Mutabl eTr eeNode i t emCl ubs=new Def aul t Mut abl eTr eeNode( "Cl ubs" ) ;addAl l Car d( i t emCl ubs ) ;r oot . add( i t emCl ubs ) ;

    Def aul t Mut abl eTreeNode i t emDi amonds=new Def aul t Mutabl eTr eeNode( "Di amonds" ) ;

    addAl l Card( i t emDi amonds ) ;r oot . add( i t emDi amonds ) ;Def aul t Mutabl eTr eeNode i t emSpades=new Def aul t Mutabl eTr eeNode( "Spades" ) ;addAl l Car d( i t emSpades ) ;r oot . add( i t emSpades ) ;Def aul t Mutabl eTr eeNode i t emHear t s=new Def aul t Mutabl eTr eeNode( "Hear t s" ) ;addAl l Car d( i t emHear t s ) ;r oot . add( i t emHear t s ) ;/ / Cr eeaza un model pent r u ar boreDef aul t TreeModel t r eeModel = new Def aul t TreeModel ( r oot ) ;

    t r ee = new J Tr ee( t r eeModel ) ;/ / Add t he l i st box to a scrol l i ng panescr ol l Pane = new J Scrol l Pane( ) ;scr ol l Pane. get Vi ewpor t ( ) . add( t r ee ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}/ / met oda car e adauga i nt r egul set de car t i de j oc l a nodul cur ent/ / al arborel uipubl i c voi d addAl l Car d( Def aul t Mut abl eTr eeNode sui t ){sui t . add( new Def aul t Mut abl eTr eeNode( " Ace" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Two" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Thr ee" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Four " ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Fi ve" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Si x" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Seven" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ei ght " ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ni ne" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( " Ten" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( " J ack" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Queen" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ki ng" ) ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] )

    {Tr ee mai nFr ame = new Tr ee( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    2

  • 7/25/2019 laborator15 -Java

    3/23

    Se poate utiliza un model de date definit de programator (se creeazo nouclaspentruacest model care extinde DefaultTreeModel). De asemenea, se poate defini o clasresponsabilpentru desenarea fiecrui nod din arbore. Sobservm urmtorul exemplu.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. t r ee. *;cl ass Tree1 ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vat e J Tr ee t r ee;pr i vat e J Scrol l Pane scr ol l Pane;publ i c Tr ee1( ){set Ti t l e( "Cust om Render ed Tr ee Appl i cat i on" ) ;set Si ze( 300, 200 ) ;setBackgr ound( Col or . gr ay ) ;

    t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;Def aul t Mutabl eTr eeNode r oot = new Def aul t Mutabl eTr eeNode( "Deck" ) ;Def aul t Mutabl eTr eeNode i t emCl ubs=new Def aul t Mut abl eTr eeNode( "Cl ubs" ) ;addAl l Car d( i t emCl ubs ) ;r oot . add( i t emCl ubs ) ;Def aul t Mut abl eTreeNode i t emDi amonds=

    new Def aul t Mutabl eTr eeNode( "Di amonds" ) ;addAl l Card( i t emDi amonds ) ;r oot . add( i t emDi amonds ) ;Def aul t Mutabl eTr eeNode i t emSpades=new Def aul t Mutabl eTr eeNode( "Spades" ) ;

    addAl l Car d( i t emSpades ) ;r oot . add( i t emSpades ) ;Def aul t Mutabl eTr eeNode i t emHear t s=new Def aul t Mutabl eTr eeNode( "Hear t s" ) ;addAl l Car d( i t emHear t s ) ;r oot . add( i t emHear t s ) ;Def aul t TreeModel t r eeModel = new Def aul t TreeModel ( r oot ) ;t r ee = new J Tr ee( t r eeModel ) ;/ / i nf or meaza ar bor el e ca est e desenat ut i l i zand o cl asa def i ni t a de/ / pr ogr amat ort r ee. setCel l Render er ( new Cust omCel l Render er ( ) ) ;scr ol l Pane = new J Scrol l Pane( ) ;scr ol l Pane. get Vi ewpor t ( ) . add( t r ee ) ;

    t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}publ i c voi d addAl l Car d( Def aul t Mut abl eTr eeNode sui t ){sui t . add( new Def aul t Mut abl eTr eeNode( " Ace" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Two" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Thr ee" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Four " ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Fi ve" ) ) ;

    3

  • 7/25/2019 laborator15 -Java

    4/23

    sui t . add( new Def aul t Mut abl eTr eeNode( "Si x" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Seven" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ei ght " ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ni ne" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( " Ten" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( " J ack" ) ) ;

    sui t . add( new Def aul t Mut abl eTr eeNode( "Queen" ) ) ;sui t . add( new Def aul t Mut abl eTr eeNode( "Ki ng" ) ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Tr ee1 mai nFr ame = new Tr ee1( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    cl ass Cust omCel l Renderer ext ends J Label i mpl ement s Tr eeCel l Renderer{

    pr i vat e I mageI con deckI mage;pr i vat e I mageI con[ ] sui t I mages;pr i vat e I mageI con[ ] car dI mages;pr i vat e bool ean bSel ect ed;publ i c Cust omCel l Renderer ( ){/ / I ncar ca i magi ni l edeckI mage = new I mageI con( "deck. gi f " ) ;sui t I mages = new I mageI con[ 4] ;sui t I mages[ 0] = new I mageI con( "cl ubs. gi f " ) ;sui t I mages[ 1] = new I mageI con( "di amonds. gi f " ) ;sui t I mages[ 2] = new I mageI con( "spades. gi f " ) ;sui t I mages[ 3] = new I mageI con( "hear t s. gi f " ) ;car dI mages = new I mageI con[ 13] ;car dI mages[ 0] = new I mageI con( "ace. gi f " ) ;car dI mages[ 1] = new I mageI con( " t wo. gi f " ) ;car dI mages[ 2] = new I mageI con( " t hr ee. gi f " ) ;car dI mages[ 3] = new I mageI con( " f our . gi f " ) ;car dI mages[ 4] = new I mageI con( " f i ve. gi f " ) ;car dI mages[ 5] = new I mageI con( "si x. gi f " ) ;car dI mages[ 6] = new I mageI con( "seven. gi f " ) ;car dI mages[ 7] = new I mageI con( "ei ght . gi f " ) ;car dI mages[ 8] = new I mageI con( "ni ne. gi f " ) ;car dI mages[ 9] = new I mageI con( " t en. gi f " ) ;car dI mages[ 10] = new I mageI con( " j ack. gi f " ) ;

    cardI mages[ 11] = new I mageI con( "queen. gi f " ) ;car dI mages[ 12] = new I mageI con( "ki ng. gi f " ) ;}publ i c Component get TreeCel l RendererComponent ( J Tree t r ee,Obj ect val ue, bool ean bSel ected, bool ean bExpanded,bool ean bLeaf , i nt i Row, bool ean bHasFocus ){/ / Af l a car e nod est e cur ent desenat si se obt i ne t extul at asat nodul uiDef aul t Mutabl eTr eeNode node = ( Def aul t Mut abl eTr eeNode)val ue;

    4

  • 7/25/2019 laborator15 -Java

    5/23

    St r i ng l abel Text = ( St r i ng) node. get User Obj ect ( ) ;t hi s. bSel ect ed = bSel ect ed;/ / Set eaza cul oar ea t ext ul uii f ( ! bSel ected )set For egr ound( Col or . bl ack ) ;el se

    set For egr ound( Col or . whi t e ) ;/ / Det ermi na i magi nea cor ect ai f ( l abel Text . equal s( "Deck" ) )set I con( deckI mage ) ;el se i f ( l abel Text . equal s( "Cl ubs" ) )set I con( sui t I mages[ 0] ) ;el se i f ( l abel Text . equal s( "Di amonds" ) )set I con( sui t I mages[ 1] ) ;el se i f ( l abel Text . equal s( "Spades" ) )set I con( sui t I mages[ 2] ) ;el se i f ( l abel Text . equal s( "Hear t s" ) )set I con( sui t I mages[ 3] ) ;

    el se i f ( l abel Text . equal s( "Ace" ) )set I con( car dI mages[ 0] ) ;el se i f ( l abel Text . equal s( "Two" ) )set I con( car dI mages[ 1] ) ;el se i f ( l abel Text . equal s( "Thr ee" ) )set I con( car dI mages[ 2] ) ;el se i f ( l abel Text . equal s( "Four " ) )set I con( car dI mages[ 3] ) ;el se i f ( l abel Text . equal s( " Fi ve" ) )set I con( car dI mages[ 4] ) ;el se i f ( l abel Text . equal s( "Si x" ) )set I con( car dI mages[ 5] ) ;el se i f ( l abel Text . equal s( "Seven" ) )set I con( car dI mages[ 6] ) ;el se i f ( l abel Text . equal s( " Ei ght " ) )set I con( car dI mages[ 7] ) ;el se i f ( l abel Text . equal s( "Ni ne" ) )set I con( car dI mages[ 8] ) ;el se i f ( l abel Text . equal s( "Ten" ) )set I con( car dI mages[ 9] ) ;el se i f ( l abel Text . equal s( " J ack" ) )set I con( car dI mages[ 10] ) ;el se i f ( l abel Text . equal s( "Queen" ) )set I con( car dI mages[ 11] ) ;el se i f ( l abel Text . equal s( "Ki ng" ) )

    set I con( car dI mages[ 12] ) ;/ / Add t he t ext t o t he cel lset Text ( l abel Text ) ;r et urn t hi s;}publ i c voi d pai nt ( Gr aphi cs g ){Col or bCol or ;I con cur r ent I = get I con( ) ;

    5

  • 7/25/2019 laborator15 -Java

    6/23

    / / Set eaza cul oar ea de f ond cor ect abCol or = bSel ect ed ? SystemCol or . t extHi ghl i ght : Col or . whi t e;g. set Col or ( bCol or ) ;/ / Deseneaza un dr ept unghi pe f undal ul cel ul ei ( nodul ui )g. f i l l Rect( 0, 0, get Wi dt h( ) - 1, get Hei ght ( ) - 1 ) ;super . pai nt ( g ) ;

    }}

    Nodurile arborelui se pot edita. Iatun exemplu.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;cl ass Tree2 ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vat e J Tr ee t r ee;

    pr i vat e J Scrol l Pane scr ol l Pane;publ i c Tr ee2( ){set Ti t l e( "Edi t abl e Tr ee Appl i cat i on" ) ;set Si ze( 300, 100 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;t r ee = new J Tr ee( ) ;t r ee. set Edi t abl e( t r ue ) ;/ / Cr eeaza un ComboBox pent r u edi t ar ea opt i uni l or

    J ComboBox box = new J ComboBox( ) ;box. addI t em( "Swi ng" ) ;box. addI t em( " J ava" ) ;box. addI t em( "neat " ) ;box. addI t em( " f unky" ) ;box. addI t em( " l i f e" ) ;box. addI t em( "awesome" ) ;box. addI t em( "cool ! " ) ;/ / Adauga ar bor el ui un cel l edi t or t r ee. set Cel l Edi t or ( new Def aul t Cel l Edi t or ( box ) ) ;scr ol l Pane = new J Scrol l Pane( ) ;scr ol l Pane. get Vi ewpor t ( ) . add( t r ee ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Tr ee2 mai nFr ame = new Tr ee2( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    6

  • 7/25/2019 laborator15 -Java

    7/23

    n continuare vom prezenta douexemple simple, care aratcum se poate proceda pentrutratarea evenimentelor generate de selectarea nodurilor arborelui i respectiv, tratareaevenimentelor generate de expandarea/comprimarea structurii arborelui.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. event . *;i mpor t j avax. swi ng. t r ee. *;cl ass Tree3 ext ends J Fr ame i mpl ement s TreeSel ect i onLi st ener{pr i vat e J Panel t opPanel ;pr i vat e J Tr ee t r ee;pr i vat e J Scrol l Pane scr ol l Pane;publ i c Tr ee3( ){set Ti t l e( " Tr eeSel ecti onLi st ener Appl i cat i on" ) ;set Si ze( 300, 100 ) ;

    setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;t r ee = new J Tr ee( ) ;/ / Adauga un obi ect ascul t at or pent r u sel ect i i l e nodur i l or ar bor el uit r ee. addTr eeSel ecti onLi st ener ( t hi s ) ;scr ol l Pane = new J Scrol l Pane( ) ;scr ol l Pane. get Vi ewpor t ( ) . add( t r ee ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}/ / Mani pul eaza sel ecti i l e nodur i l or

    publ i c voi d val ueChanged( Tr eeSel ect i onEvent event ){i f ( event . get Sour ce( ) == t r ee ){/ / Af i seaza cal ea compl et a cat r e nodul cur ent sel ect at

    Tr eePat h path = t r ee. getSel ect i onPat h( ) ;Syst em. out . pr i nt l n( "Sel ect i on pat h="+ pat h. t oSt r i ng( ) ) ;/ / Obt i ne t ext ul at asat ul t i mul ui nod sel ect atSyst em. out . pr i nt l n( "Sel ect i on="+ pat h. get Last Pat hComponent ( ) ) ;}}publ i c st at i c voi d mai n( St r i ng ar gs[ ] )

    {Tr ee3 mai nFr ame = new Tr ee3( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;

    7

  • 7/25/2019 laborator15 -Java

    8/23

    i mpor t j avax. swi ng. event . *;i mpor t j avax. swi ng. t r ee. *;cl ass Tree4 ext ends J Fr ame i mpl ement s TreeExpansi onLi st ener{pr i vat e J Panel t opPanel ;pr i vat e J Tr ee t r ee;

    pr i vat e J Scrol l Pane scr ol l Pane;publ i c Tr ee4( ){set Ti t l e( "TreeExpansi onLi st ener Appl i cat i on" ) ;set Si ze( 300, 300 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;t r ee = new J Tr ee( ) ;/ / Adauga un obi ect ascul t at ort r ee. addTr eeExpansi onLi st ener ( t hi s ) ;

    scr ol l Pane = new J Scrol l Pane( ) ;scr ol l Pane. get Vi ewpor t ( ) . add( t r ee ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}/ / Mani pul eaza expansi unea nodur i l or ar bor el uipubl i c voi d t r eeExpanded( Tr eeExpansi onEvent event ){i f ( event . get Sour ce( ) == t r ee ){/ / Af i seaza cal ea compl et a cat r e nodul expandat

    Tr eePat h path = event . getPat h( ) ;Syst em. out . pr i nt l n( "Node Expanded=" + pat h. t oSt r i ng( ) ) ;}}/ / Mani pul eaza compr i mar ea nodur i l or ar bor el uipubl i c voi d t r eeCol l apsed( Tr eeExpansi onEvent event ){i f ( event . get Sour ce( ) == t r ee ){

    Tr eePat h path = event . getPat h( ) ;Syst em. out . pr i nt l n( "Node Col l apsed=" + pat h. t oSt r i ng( ) ) ;}}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Tr ee4 mai nFr ame = new Tr ee4( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    8

  • 7/25/2019 laborator15 -Java

    9/23

    2. JTable

    JTableeste o componentJava care permite afiarea unor cantiti mari de date ntr-unmod simplu bidimensional. Are o nfiare similar unei foi de calcul (spreadsheet). Nu sepoate utiliza ntocmai ca o foaie de calcul (datorit unor limitri), dar suport multe alte

    caracteristici. Sconsiderm urmtorul exemplu:i mpor t j ava. awt . *;i mport j ava. ut i l . * ;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. t abl e. *;cl ass Tabl e1 ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vat e J Tabl e t abl e;pr i vat e J Scrol l Pane scr ol l Pane;pr i vat e St r i ng col umnNames[ ] ;pr i vat e St r i ng dat aVal ues[ ] [ ] ;publ i c Tabl e1( ){set Ti t l e( "Advanced Tabl e Appl i cat i on" ) ;set Si ze( 300, 200 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza col oaneCr eat eCol umns( ) ;Cr eat eDat a( ) ;/ / Cr eeaza o i nst ant a t abel

    t abl e = new J Tabl e( dat aVal ues, col umnNames ) ;/ / Conf i gur eaza cat i va di n par amet r i i J Tabl et abl e. set ShowHor i zont al Li nes( f al se ) ;t abl e. set RowSel ect i onAl l owed( t r ue ) ;t abl e. set Col umnSel ect i onAl l owed( t r ue ) ;/ / Modi f i ca cul oar ea de sel ect i et abl e. set Sel ect i onFor egr ound( Col or . whi t e );t abl e. set Sel ect i onBackgr ound( Col or . r ed ) ;/ / Adauga t abel ul l a un "scr ol l i ng pane"scrol l Pane = t abl e. creat eScrol l PaneFor Tabl e( t abl e ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}

    publ i c voi d Cr eat eCol umns( ){/ / Cr eeaza et i chet el e col oanel orcol umnNames = new St r i ng[ 8] ;f or ( i nt i Ct r = 0; i Ct r < 8; i Ct r ++ )col umnNames[ i Ct r ] = "Col : " + i Ct r ;}publ i c voi d Cr eat eDat a( ){

    9

  • 7/25/2019 laborator15 -Java

    10/23

    / / Cr eeaza f i ecar e el ementdat aVal ues = new St r i ng[ 100] [ 8] ;f or ( i nt i Y = 0; i Y < 100; i Y++ ){f or ( i nt i X = 0; i X < 8; i X++ ){

    dat aVal ues[ i Y] [ i X] = " " + i X + ", " + i Y;}}}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Tabl e1 mai nFr ame = new Tabl e1( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    La fel ca multe alte componente Swing, JTablesuportnlocuirea modelului su de date

    implicit cu unul definit de programator, i de asemenea, permite utilizarea unei clase (definitdeprogramator) responsabilpentru desenarea fiecrei celule a tabelului.

    i mpor t j ava. awt . *;i mport j ava. ut i l . * ;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. t abl e. *;i mpor t j avax. swi ng. bor der . *;cl ass Tabl e2 ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vat e J Tabl e t abl e;

    pr i vat e J Scrol l Pane scr ol l Pane;pr i vat e St r i ng col umnNames[ ] ;pr i vat e St r i ng dat aVal ues[ ] [ ] ;publ i c Tabl e2( ){set Ti t l e( "Cust om Header Render i ng Appl i cat i on" ) ;set Si ze( 300, 200 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza un model de dat eCust omDat aModel cust omDat aModel = new Cust omDat aModel ( ) ;t abl e = new J Tabl e( cust omDat aModel ) ;Cr eat eCol umns( ) ;t abl e. set ShowHor i zont al Li nes( f al se ) ;t abl e. set RowSel ect i onAl l owed( t r ue ) ;t abl e. set Col umnSel ect i onAl l owed( t r ue ) ;t abl e. set Sel ect i onFor egr ound( Col or . whi t e );t abl e. set Sel ect i onBackgr ound( Col or . r ed ) ;scrol l Pane = t abl e. creat eScrol l PaneFor Tabl e( t abl e ) ;

    10

  • 7/25/2019 laborator15 -Java

    11/23

    t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}publ i c voi d Cr eat eCol umns( ){/ / Spunem ca vomcr ea manual col oanel et abl e. set Aut oCr eateCol umnsFr omModel ( f al se ) ;

    f or ( i nt i Ct r = 0; i Ct r < 4; i Ct r ++ ){/ / Manual cr eamo noua col oana

    Tabl eCol umn col umn = new Tabl eCol umn( i Ct r ) ;col umn. set Header Val ue( ( Obj ect ) ( "Col : " + i Ct r ) ) ;/ / Adaugam un obi ect care se va ocupa de desenarea unei cel ul e headercol umn. set Header Render er ( new Cust omHeaderRenderer ( ) ) ;/ / Adaugam col oana l a t abelt abl e. addCol umn( col umn ) ;}}publ i c st at i c voi d mai n( St r i ng ar gs[ ] )

    {Tabl e2 mai nFr ame = new Tabl e2( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    cl ass Cust omDat aModel extends Abst r act Tabl eModel{publ i c Obj ect get Val ueAt ( i nt i RowI ndex, i nt i Col umnI ndex ){r eturn "" + i Col umnI ndex + " , " + i RowI ndex;}publ i c voi d set Val ueAt ( Obj ect aVal ue, i nt i RowI ndex, i nt i Col umnI ndex ){}publ i c i nt get Col umnCount ( ){r et ur n 0;}publ i c i nt get RowCount ( ){r et ur n 500;}}

    cl ass Cust omHeaderRenderer ext ends J Label i mpl ement s Tabl eCel l Renderer{pr i vat e bool ean i sSel ect ed;pr i vat e bool ean hasFocus;pr i vat e I mageI con[ ] sui t I mages;publ i c Cust omHeader Render er ( ){sui t I mages = new I mageI con[ 4] ;sui t I mages[ 0] = new I mageI con( "cl ubs. gi f " ) ;

    11

  • 7/25/2019 laborator15 -Java

    12/23

    sui t I mages[ 1] = new I mageI con( "di amonds. gi f " ) ;sui t I mages[ 2] = new I mageI con( "spades. gi f " ) ;sui t I mages[ 3] = new I mageI con( "hear t s. gi f " ) ;}publ i c Component get Tabl eCel l RendererComponent ( J Tabl e t abl e,Obj ect val ue, bool ean i sSel ect ed, bool ean hasFocus, i nt r ow, i nt col umn

    ){/ / Obt i ne t ext ul car e se va af i saSt r i ng sText = ( St r i ng) val ue;/ / Set eaza opt i uni de al i ni amentset Ver t i cal Al i gnment ( Swi ngConst ant s. CENTER ) ;set Hor i zont al Al i gnment ( Swi ngConst ant s. CENTER ) ;setHor i zont al TextPosi t i on( Swi ngConst ant s. CENTER ) ;set Ver t i cal TextPosi t i on( Swi ngConst ant s. BOTTOM ) ;/ / Asi gneaza o margi nesetBor der ( new Ti t l edBor der ( new Et chedBor der ( ) , sText ) ) ;/ / Popul eaza cu i magi ne si t ext

    set I con( sui t I mages[ col umn] ) ;/ / Set t he t ext t o t he cor r ect sui tswi t ch( col umn ){case 0:set Text ( "Cl ubs" ) ;br eak;case 1:setText ( "Di amonds" ) ;br eak;case 2:set Text ( "Hear t s" ) ;br eak;case 3:set Text ( "Spades" ) ;br eak;}r et urn t hi s;}}

    n unele situaii, va fi nevoie ca aplicaia sefectueze sarcini speciale atunci cnd mouse-ul este poziionat pe o anume celul a tabelului. Implicit, clasa JTable nu ofer aceastcapabilitate. Deci, pentru a manipula evenimentele generate de mouse sau de tastatura, se

    procedeazca mai jos se deriveazo nouclasdin clasa JTable:i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mport j ava. ut i l . * ;i mpor t j avax. swi ng. *;i mpor t j avax. swi ng. t abl e. *;cl ass Tabl e3 ext ends J Fr ame{

    12

  • 7/25/2019 laborator15 -Java

    13/23

    pr i vat e J Panel t opPanel ;pr i vat e J Tabl e t abl e;pr i vat e J Scrol l Pane scr ol l Pane;pr i vat e St r i ng col umnNames[ ] ;pr i vat e St r i ng dat aVal ues[ ] [ ] ;publ i c Tabl e3( )

    {set Ti t l e( "Cust om Tabl e Dat a Model Appl i cat i on" ) ;set Si ze( 300, 200 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza model ul de dateCust omDat aModel cust omDat aModel = new Cust omDat aModel ( ) ;t abl e = new MyTabl e( cust omDat aModel ) ;Cr eat eCol umns( ) ;t abl e. set ShowHor i zont al Li nes( f al se ) ;

    t abl e. set RowSel ect i onAl l owed( t r ue ) ;t abl e. set Col umnSel ect i onAl l owed( t r ue ) ;t abl e. set Sel ect i onFor egr ound( Col or . whi t e );t abl e. set Sel ect i onBackgr ound( Col or . r ed ) ;scrol l Pane = t abl e. creat eScrol l PaneFor Tabl e( t abl e ) ;t opPanel . add( scr ol l Pane, Bor der Layout . CENTER ) ;}publ i c voi d Cr eat eCol umns( ){/ / Spunem ca vomcr ea col oanel e manualt abl e. set Aut oCr eateCol umnsFr omModel ( f al se ) ;f or ( i nt i Ct r = 0; i Ct r < 8; i Ct r ++ ){/ / Manual cr eama noua col oana

    Tabl eCol umn col umn = new Tabl eCol umn( i Ct r ) ;col umn. set Header Val ue( ( Obj ect ) ( "Col : " + i Ct r ) ) ;/ / Adaugam col oana l a t abelt abl e. addCol umn( col umn ) ;}}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Tabl e3 mai nFr ame = new Tabl e3( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}

    }

    cl ass Cust omDat aModel extends Abst r act Tabl eModel{publ i c Obj ect get Val ueAt ( i nt i RowI ndex, i nt i Col umnI ndex ){r eturn "" + i Col umnI ndex + " , " + i RowI ndex;}

    13

  • 7/25/2019 laborator15 -Java

    14/23

    publ i c voi d set Val ueAt ( Obj ect aVal ue, i nt i RowI ndex, i nt i Col umnI ndex ){ }publ i c i nt get Col umnCount ( ){r et ur n 0;}

    publ i c i nt get RowCount ( ){r et ur n 500;}}

    cl ass MyTabl e ext ends J Tabl e i mpl ement s MouseLi st ener{publ i c MyTabl e( Cust omDat aModel model ){super ( model ) ;/ / Conf i gur e t he t abl e

    set Font ( new Font ( "Hel vet i ca" , Font . PLAI N, 12 ) ) ;set Col umnSel ect i onAl l owed( f al se ) ;set Sel ect i onMode( Li st Sel ect i onModel . SI NGLE_SELECTI ON ) ;set ShowGr i d( f al se ) ;set I nt er cel l Spaci ng( new Di mensi on( 0, 1 ) ) ;set Aut oCr eat eCol umnsFromModel ( f al se ) ;si zeCol umnsToFi t ( t r ue ) ;/ / Prevent t abl e col umn r eor der i ng

    J Tabl eHeader header = get Tabl eHeader ( ) ;header . setUpdat eTabl eI nReal Ti me( f al se ) ;header . set Reor der i ngAl l owed( f al se ) ;/ / At t ach a mouse l i st eneraddMouseLi st ener ( t hi s ) ;}publ i c voi d mouseCl i cked( MouseEvent e ){i nt i MouseX = e. get X( ) ;i nt i MouseY = e. get Y( ) ;i nt i Sel ect edCol umn = col umnAt Poi nt ( new Poi nt ( i MouseX, i MouseY ) ) ;i nt i Sel ect edRow = r owAt Poi nt ( new Poi nt ( i MouseX, i MouseY ) ) ;Syst em. out . pr i nt l n( "S- a sel ect at cel ul a de l a pozi t i a "+i Sel ect edRow+", "+i Sel ect edCol umn) ;}publ i c voi d mouseEnt ered( MouseEvent e ){}

    publ i c voi d mouseExi t ed( MouseEvent e ){}publ i c voi d mousePr essed( MouseEvent e ){}publ i c voi d mouseRel eased( MouseEvent e ){}}

    14

  • 7/25/2019 laborator15 -Java

    15/23

    3. Meniuri

    Swing implementeaz o clas JMenuBar care, pentru compatibilitate, suport API-ulAWT pentru barele de meniu. Dar, oferi faciliti n plus, cum ar fi faptul cbarele de meniuSwing pot fi plasate oriunde n ferastra aplicaiei, iar instanele JMenuBar pot fi aplicate i

    applet-urilor.i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;cl ass Meni u1 ext ends J Fr ame{pr i vat e J Panel t opPanel ;pr i vate J MenuBar menuBar ;pr i vat e J Menu menuFi l e;pr i vat e J Menu menuEdi t ;pr i vat e J Menu menuPropert y;publ i c Meni u1( ){set Ti t l e( "Menu Appl i cat i on" ) ;set Si ze( 310, 130 ) ;t opPanel = new J Panel ( ) ; t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza bara de meni umenuBar = new J MenuBar ( ) ;/ / Set eaza aceast a i nst ant a ca f i i nd bar a de meni u a apl i cat i eiset J MenuBar( menuBar ) ;/ / cr eeaza un submeni u "Pr oper t i es"menuPr opert y = new J Menu( "Propert i es" ) ;/ / Cr eeaza un meni u "Fi l e"

    menuFi l e = new J Menu( "Fi l e" ) ;menuBar . add( menuFi l e ) ;/ / Adauga submeni ul "Pr oper t i es" l a meni ul "Fi l e"menuFi l e. addSepar at or ( ) ;menuFi l e. add( menuPropert y ) ;menuFi l e. addSepar at or ( ) ;/ / Cr eeaza meni ul " Edi t "menuEdi t = new J Menu( "Edi t " ) ;menuBar . add( menuEdi t ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){

    Meni u1 mai nFr ame = new Meni u1( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    Sconsiderm un exemplu mai complex.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;

    15

  • 7/25/2019 laborator15 -Java

    16/23

    i mpor t j avax. swi ng. *;cl ass Meni u2 ext ends J Fr ame i mpl ement s Act i onLi st ener{pr i vat e f i nal i nt I TEM_PLAI N = 0; / / I t em t ypespr i vat e f i nal i nt I TEM_CHECK = 1;pr i vat e f i nal i nt I TEM_RADI O = 2;

    pr i vat e J Panel t opPanel ;pr i vate J MenuBar menuBar ;pr i vat e J Menu menuFi l e;pr i vat e J Menu menuEdi t ;pr i vat e J Menu menuPropert y;pr i vat e J MenuI t em menuProper t ySyst em;pr i vat e J MenuI t em menuProper t yEdi t or ;pr i vat e J MenuI t em menuProper t yDi spl ay;pr i vat e J MenuI t em menuFi l eNew;pr i vat e J MenuI t em menuFi l eOpen;pr i vat e J MenuI t em menuFi l eSave;pr i vat e J MenuI t em menuFi l eSaveAs;

    pr i vat e J MenuI t em menuFi l eExi t ;pr i vat e J MenuI t em menuEdi t Copy;pr i vat e J MenuI t em menuEdi t Cut ;pr i vat e J MenuI t em menuEdi t Past e;publ i c Meni u2( ){set Ti t l e( "Compl et e Menu Appl i cat i on" ) ;setSi ze( 310, 130 ) ; t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeaza bara de meni umenuBar = new J MenuBar ( ) ;/ / Set eaza aceast a i nst ant a ca f i i nd bar a de meni u a apl i cat i eiset J MenuBar( menuBar ) ;/ / cr eeaza un submeni u "Pr oper t i es"menuPr opert y = new J Menu( "Propert i es" ) ;menuPropert y. set Mnemoni c( ' P' ) ;/ / Cr eeaza opt i uni l e di n submeni ul "Pr oper t i es"menuProper t ySyst em =Cr eat eMenuI t em( menuPr oper t y, I TEM_PLAI N, "Syst em. . . ", nul l , ' S' , nul l ) ;menuPr oper t yEdi t or =Cr eat eMenuI t em( menuPr oper t y, I TEM_PLAI N, "Edi t or . . . ", nul l , ' E' , nul l ) ;menuProper t yDi spl ay =Cr eat eMenuI t em( menuPr oper t y, I TEM_PLAI N, "Di spl ay. . . ", nul l , ' D' , nul l ) ;/ / Cr eeaza un meni u "Fi l e"

    menuFi l e = new J Menu( "Fi l e" ) ;menuFi l e. setMnemoni c( ' F' ) ;menuBar . add( menuFi l e ) ;/ / Const r ui est e opt i uni l e meni ul ui "Fi l e"menuFi l eNew=Cr eat eMenuI t em( menuFi l e, I TEM_PLAI N, "New" , nul l , ' N' , nul l ) ;menuFi l eOpen =Cr eat eMenuI t em( menuFi l e, I TEM_PLAI N, "Open. . . " , new I mageI con( "open. gi f " ) ,' O' , "Open a new f i l e" ) ;

    16

  • 7/25/2019 laborator15 -Java

    17/23

    menuFi l eSave = Cr eat eMenuI t em( menuFi l e, I TEM_PLAI N, "Save",new I mageI con( "save. gi f " ) , ' S' , " Save t hi s f i l e" ) ;menuFi l eSaveAs = Cr eat eMenuI t em( menuFi l e, I TEM_PLAI N, "Save As. . . " ,nul l , ' A' , "Save t hi s dat a t o a new f i l e" ) ;/ / Adauga submeni ul "Pr oper t i es" l a meni ul "Fi l e"menuFi l e. addSepar at or ( ) ;

    menuFi l e. add( menuPropert y ) ;menuFi l e. addSepar at or ( ) ;menuFi l eExi t = Cr eateMenuI t em( menuFi l e, I TEM_PLAI N, "Exi t " ,nul l , ' x' , "Exi t t he pr ogr am" ) ;/ / Cr eeaza meni ul "Edi t "menuEdi t = new J Menu( "Edi t " ) ;menuEdi t . setMnemoni c( ' E' ) ;menuBar . add( menuEdi t ) ;/ / Cr eeaza opt i uni l e meni ul ui "Edi t "menuEdi t Cut = Cr eat eMenuI t em( menuEdi t , I TEM_PLAI N, "Cut " , nul l , ' t ' ,"Cut dat a t o t he cl i pboar d" ) ;menuEdi t Copy = Cr eat eMenuI t em( menuEdi t , I TEM_PLAI N, "Copy", nul l , ' C' ,

    "Copy dat a to the cl i pboar d" ) ;menuEdi t Past e = Cr eat eMenuI t em( menuEdi t , I TEM_PLAI N, "Past e", nul l ,' P' , "Paste dat a f r om t he cl i pboar d" ) ;}

    publ i c J MenuI t em Cr eat eMenuI t em( J Menu menu, i nt i Type, St r i ng sText ,I mageI con i mage, i nt accel er at or Key, St r i ng sTool Ti p )

    {/ / Cr eeaza opt i unea meni ul ui

    J MenuI t em menuI t em;swi t ch( i Type ){case I TEM_RADI O:menuI t em = new J Radi oBut t onMenuI t em( ) ;br eak;case I TEM_CHECK:menuI t em = new J CheckBoxMenuI t em( ) ;br eak;def aul t :menuI t em = new J MenuI t em( ) ;br eak;}/ / Adauga t ext ul opt i uni imenuI t em. setText ( sText ) ;/ / Adauga i magi nea (opt i onal )

    i f ( i mage ! = nul l )menuI t em. set I con( i mage ) ;/ / Adauga accel er at or ul ( combi nat i a de t ast e)i f ( accel er at or Key > 0 )menuI t em. set Mnemoni c( accel erat orKey ) ;/ / Adauga t ext ul pent r u "t ool t i p" ( opt i onal )i f ( sTool Ti p ! = nul l )menuI t em. setTool Ti pText ( sTool Ti p ) ;

    17

  • 7/25/2019 laborator15 -Java

    18/23

    / / Adauga un obi ect ascul t ator de eveni ment e pent r u aceast a opt i une a/ / meni ul uimenuI t em. addAct i onLi st ener ( t hi s ) ;menu. add( menuI t em ) ;r et urn menuI t em;}

    publ i c voi d act i onPer f or med( Act i onEvent event ){Syst em. out . pr i nt l n( event ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){Meni u2 mai nFr ame = new Meni u2( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    n Swing, opiunea din meniu de tipul check box este implementat ntr-o clas

    JCheckBoxMenuItem. Ca orice componentJMenuItem, suporttext sau imagine.

    i mpor t j ava. awt . *;i mpor t j avax. swi ng. *;cl ass Meni u3 ext ends J Fr ame{pr i vat e J Panel t opPanel ;publ i c Meni u3( ){set Ti t l e( "Menu Appl i cat i on #2" ) ;set Si ze( 310, 130 ) ;setBackgr ound( Col or . gr ay ) ;

    t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;

    J MenuBar menuBar = new J MenuBar ( ) ;set J MenuBar( menuBar ) ;

    J Menu opt i onMenu = new J Menu( "Menu" ) ;menuBar . add( opt i onMenu ) ;/ / Cr eeaza opt i uni l e meni ul ui "check box"

    J CheckBoxMenuI t em menuEdi t I nser t = new J CheckBoxMenuI t em( " I nser t " ) ;opt i onMenu. add( menuEdi t I nser t ) ;

    J CheckBoxMenuI t em menuEdi t Wr ap= new J CheckBoxMenuI t em( "Wr ap l i nes" ) ;opt i onMenu. add( menuEdi t Wr ap ) ;

    J CheckBoxMenuI t em menuEdi t Caps= new J CheckBoxMenuI t em( "Caps Lock" ) ;opt i onMenu. add( menuEdi t Caps ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){Meni u3 mai nFr ame = new Meni u3( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    18

  • 7/25/2019 laborator15 -Java

    19/23

    Swing furnizeazi o altclasnumitJRadioButtonMenuItem. Surmrim exemplul:

    i mpor t j ava. awt . *;i mpor t j avax. swi ng. *;cl ass Meni u4 ext ends J Fr ame

    {pr i vat e J Panel t opPanel ;publ i c Meni u4( ){set Ti t l e( "Menu Appl i cat i on #3" ) ;set Si ze( 310, 130 ) ;t opPanel = new J Panel ( ) ;get Cont ent Pane( ) . add( t opPanel ) ;

    J MenuBar menuBar = new J MenuBar ( ) ;set J MenuBar( menuBar ) ;

    J Menu opt i onMenu = new J Menu( "Menu" ) ;menuBar . add( opt i onMenu ) ;

    J Radi oBut t onMenuI t em menuCursor Smal l =new J Radi oBut t onMenuI t em( "Smal l Cursor " ) ;

    opt i onMenu. add( menuCursor Smal l ) ;J Radi oBut t onMenuI t em menuCursor Medi um =

    new J Radi oBut t onMenuI t em( "Medi um Cursor " ) ;opt i onMenu. add( menuCursor Medi um ) ;

    J Radi oBut t onMenuI t em menuCursor Lar ge =new J Radi oBut t onMenuI t em( "Large Cursor " ) ;

    opt i onMenu. add( menuCursor Large ) ;But t onGr oup cur sor Gr oup = new But t onGr oup( ) ;cursor Gr oup. add( menuCursor Smal l ) ;cursor Gr oup. add( menuCursor Medi um ) ;

    cursor Gr oup. add( menuCursor Large ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){Meni u4 mai nFr ame = new Meni u4( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    n final vom examina clasa JPopupMenu (pentru a apare meniul, se va apsa butonuldreapta al mouse-ului).

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;cl ass Meni u5 ext ends J Fr ame i mpl ement s Act i onLi st ener{pr i vat e J Panel t opPanel ;pr i vat e J PopupMenu popupMenu;publ i c Meni u5( ){

    19

  • 7/25/2019 laborator15 -Java

    20/23

    set Ti t l e( "Popup Menu Appl i cat i on" ) ;set Si ze( 310, 130 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . set Layout ( nul l ) ;get Cont ent Pane( ) . add( t opPanel ) ;

    / / Cr eeaza opt i uni l e pent r u meni ul pop- upJ MenuI t em menuFi l eNew = new J MenuI t em( "New" ) ;J MenuI t em menuFi l eOpen = new J MenuI t em( "Open. . . " ) ;J MenuI t em menuFi l eSave = new J MenuI t em( "Save" ) ;J MenuI t em menuFi l eSaveAs = new J MenuI t em( "Save As. . . " ) ;J MenuI t em menuFi l eExi t = new J MenuI t em( "Exi t " ) ;/ / Cr eeaza un meni u pop- uppopupMenu = new J PopupMenu( "Menu" ) ;popupMenu. add( menuFi l eNew ) ;popupMenu. add( menuFi l eOpen ) ;popupMenu. add( menuFi l eSave ) ;popupMenu. add( menuFi l eSaveAs ) ;

    popupMenu. add( menuFi l eExi t ) ;t opPanel . add( popupMenu ) ;/ / Supor t pent r u ascul t ar ea eveni ment el or gener at e de act i uni l e cu/ / mouse- ulenabl eEvent s( AWTEvent . MOUSE_EVENT_MASK ) ;menuFi l eNew. addAct i onLi st ener ( t hi s ) ;menuFi l eOpen. addAct i onLi st ener ( t hi s ) ;menuFi l eSave. addAct i onLi st ener ( t hi s ) ;menuFi l eSaveAs. addAct i onLi st ener ( t hi s ) ;menuFi l eExi t . addAct i onLi st ener ( t hi s ) ;}publ i c voi d pr ocessMouseEvent ( MouseEvent event ){i f ( event . i sPopupTr i gger ( ) ){popupMenu. show( event . get Component ( ) ,event . get X( ) , event . get Y( ) ) ;}super. pr ocessMouseEvent ( event ) ;}publ i c voi d act i onPer f or med( Act i onEvent event ){Syst em. out . pr i nt l n( event ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] )

    {Meni u5 mai nFr ame = new Meni u5( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    20

  • 7/25/2019 laborator15 -Java

    21/23

    4. ToolBar

    Sconsiderm urmtorul exemplu.

    i mpor t j ava. awt . *;i mpor t j ava. awt . event . *;i mpor t j avax. swi ng. *;cl ass MyTool Bar ext ends J Fr ame i mpl ement s Act i onLi st ener{pr i vat e J Panel t opPanel ;pr i vat e J But t on but t onNew;pr i vat e J But t on but t onOpen;pr i vat e J But t on but t onSave;pr i vat e J But t on but t onCopy;pr i vat e J But t on but t onCut ;pr i vat e J But t on but t onPast e;publ i c MyTool Bar ( ){

    set Ti t l e( " Basi c Tool bar Appl i cat i on" ) ;set Si ze( 310, 130 ) ;setBackgr ound( Col or . gr ay ) ;t opPanel = new J Panel ( ) ;t opPanel . setLayout ( new Bor der Layout ( ) ) ;get Cont ent Pane( ) . add( t opPanel ) ;/ / Cr eeza un t ool bar

    J Tool Bar myTool bar = new J Tool Bar ( ) ;t opPanel . add( myTool bar , BorderLayout . NORTH ) ;/ / Adauga but oane l a t ool barbut t onNew = addTool barBut t on( myTool bar , f al se, "New" ,

    "new", "Cr eat e a new document " ) ;

    but t onOpen = addTool barBut t on( myTool bar , t r ue, "Open" , "open" ,"Open an exi st i ng document " ) ;but t onSave = addTool barBut t on( myTool bar, t r ue, "Save" , "save",

    "Open an exi st i ng document " ) ;myTool bar . addSeparator ( ) ;but t onCopy = addTool barBut t on( myTool bar, t r ue, nul l , "copy",

    "Copy sel ect i on t o the cl i pboar d" ) ;but t onCut = addTool bar But t on( myTool bar , t r ue, nul l , " cut " ,

    "Cut sel ecti on t o t he cl i pboar d" ) ;but t onPast e = addTool bar But t on( myTool bar , t r ue, nul l , "past e" ,

    "Past e sel ecti on f r om t he cl i pboar d" ) ;/ / Adauga o zona de edi t are pent r u a umpl e spat i ul

    J Text Ar ea t ext Ar ea = new J Text Ar ea( ) ;t opPanel . add( t ext Ar ea, Border Layout . CENTER ) ;}/ / Met oda care cr eeaza but oanel e di n t ool barpubl i c J But t on addTool bar But t on( J Tool Bar t ool Bar , bool ean bUseI mage,

    St r i ng sBut t onText , St r i ng sBut t on, St r i ng sTool Hel p ){

    J But t on b;/ / Cr eeaza un nou but on

    21

  • 7/25/2019 laborator15 -Java

    22/23

    i f ( bUseI mage )b = new J But t on( new I mageI con( sBut t on + " . gi f " ) ) ;el seb = ( J But t on) t ool Bar . add( new J But t on( ) ) ;/ / Adauga but onul l a t ool bart ool Bar . add( b ) ;

    / / Adauga t ext l a but on ( opt i onal )i f ( sBut t onText ! = nul l )b. set Text ( sBut t onText ) ;el se{b. set Mar gi n( new I nset s( 0, 0, 0, 0 ) ) ;}/ / Adauga "t ool t i p" ( opt i onal )i f ( sTool Hel p ! = nul l )b. set Tool Ti pText ( sTool Hel p ) ;/ / Ne asi gur am ca but onul t r i mi t e un mesaj cand ut i l i zat or ul f ace cl i ck/ / pe el

    b. set Act i onCommand( "Tool bar : " + sBut t on ) ;b. addActi onLi st ener ( t hi s ) ;r et ur n b;}publ i c voi d act i onPer f or med( Act i onEvent event ){Syst em. out . pr i nt l n( event ) ;}publ i c st at i c voi d mai n( St r i ng ar gs[ ] ){MyTool Bar mai nFr ame = new MyTool Bar ( ) ;mai nFrame. set Vi si bl e( t r ue ) ;}}

    III.

    MODUL DE LUCRU

    1. Se editeaz codul sursal programului Java folosind un editor de text disponibil(de ex., sepoate utiliza Notepad).

    2. Se salveaz fiierul cu extensia .java. Fiierul trebuie salvat la urmtoarea locaie:c:\JBulider7\jdk1.3.1\bin

    3. Compilarea aplicaiei Java se va face din linia de comand. Se poate proceda astfel. Sedeschide o fereastrMS-Dos: Start ->Run, se tiprete commandn csua de text i se apasbutonul OK. Printr-o schimbare de directoare i subdirectoare se trece la locaia:c:\JBulider7\jdk1.3.1\bin. Sau, se lanseaz WindowsCommander. Se trece la locaiac:\JBulider7\jdk1.3.1\bin. Se deschide o fereastrMS-Dos: Commander ->Run Dos.

    4. Pentru compilare, se tiprete la prompter javac nume_fiier_surs.javai se apasEnter.De ex., dac fiierul se numete Test.java, se va scrie javac Test.java. n cazul n careprogramul conine erori acestea vor fi semnalate i afiate n fereastra MS-Dos, dupcare vaapare iar prompter-ul. Dacprogramul nu conine erori i compilarea se face cu succes, atunciva apare numai prompter-ul.

    22

  • 7/25/2019 laborator15 -Java

    23/23

    5. Pentru rularea unei aplicaii Java stand-alone, se lanseaz interpretorul Java. Se tiprete laprompter urmtoarea comandjava nume_clas_care_conine_maini se apasEnter. Deex., dac clasa din program care conine metodamain( ) se numete Test, se va scrie javaTest.

    6. Dacprogramul Java este un applet, se editeazfiierul .html. Se salveazn acelai director

    cu fiierul .class rezultat n urma compilrii cu succes a fiierului surs java. Apoi pentrurulare se poate utiliza appletviewer nume.html.Alternativ, dup compilarea aplicaiei Java, fiierul .class mpreun cu fiierul .html pot fimutate n orice alt director (nu trebuie neaprat s fie n c:\JBulider7\jdk1.3.1\bin ). Sencarcfiierul .htmlntr-un browser Web (ex., Internet Explorer).

    IV. TEM

    1. Se vor parcurge toate exemplele prezentate n platforma de laborator testndu-se practic.


Recommended