Writing /home/infogasy/domains/wiki.infogasy.net/public_html/data/cache/3/33ed3849c0461e391994a33858ef1e04.xhtml failed

Andao hiresaka objet indray faha XII

Mikasika ny Interface graphique amin'ny Java (tohiny lavabe)

Hita tamin’ilay fampiasana tao amin’ny resaka faha-11 ary fa dia tsy nisahana isika raha tsy fikirakirana zavatra aseho fotsiny tamin’izy io.
Dia hitantsika tao ary ny fisehoan?ireo rafitra efatra tsara fehezina raha fanorenana andalan-drafitra fanehoana fotsiny no hatrehina.

Dia mipetraka ny fanontaniana hoe :

Dia ahoana izany ohatra raha hasiantsika rafitra fanehoana miaraka amin’iny kajy adisanina tany amboalohany iny, na ilay fikirakirana tahiry soratra tao amin’ny resaka faha-10 ?

Nefa alohan’ny hirosoana amin’izay ezaka izay, dia andao hasiana resaka kely ihany aloha ny amin’ny fomba fijery ankapobe rehefa hanganana praograma informatika isika.

Izao mantsy, raha fanorenana fotsiny aloha dia azo zaraina telo angamba raha tsorina ny andalana tsy maintsy atsangana :

  1. Ny fitehirizana maharitra ireo zavatra kirakiraina anaty praograma (persistance de donnees)
  2. Ny fanehoana ivelany amin’ireo mpampiasa azy ny fampiasana ilay praograma amin’ny sehatra fampiharana (GUI na presentation).
  3. Ireo vainga maro fampiharana ny lalana rehetra mikasika ilay sehatrasa raha ampiasana ny fitaovana informatika io sehatrasa io (logique applicatif)

Amin’ny hevitro manokana aloha dia ity farany ity no tena manahirana ny fametrahana azy, indrindra moa ka ny fiaraha-miasany amin’ireo andalana sasany no asiana adi-hevitra. Ary eo indrindra no tena mahabe maro ny lalan-kombana amin’ny sehatra fanorenana informatika amin’izao fotoana izao !

Ny malaza ankehitriny moa, raha fanasarahana andalan-draftra no jerena dia ilay MVC (Model - View - Controller), ary matoa izy io lasa misy izany MVC 1 sy 2 izany dia angamba nisy tsy ampy ihany ilay famaritana rafitra voalohany, ka nivoatra miandalana ny fomba fijery ?

Dia mbola miha-sarotra ny resaka rehefa entina ary ilay vaha-olana fanorenana praograma (raha hita) eo amin’ny fitaovana materialy hihodinan?ireo praograma ireo?

Raha adika tsotra dia izao :

  • Etsy anilany misy izany ny tetika entina mamaha olana sehatrasa iray amin’ny fitaovana fanorenana praograma informatika. Miasa ao anaty sehatrasa na olana isika (espace probleme), ary misafidy na mampiasa fomba fanao mazava tsara araka ny sahaza antsika. Eto dia miezaka manakaiky ny olana no mahazatra, ary matetika dia mamboatra modely ahafahana maneho endrika io fipetraka olana io sy ny famahana azy.
  • Etsy andaniny misy ireo fitaovana materialy (Hardware) na mpandrindra milina ambany fiasa (OS) maro be mety hihodinan’ny fanorenana natsangana isika, ka antenaina fa hitondra ny vaha-olana mamaly tsara ilay olana napetraka tary aloha (espace solution). Miezaka manakaiky ny fitaovana informatika isika teo, nefa tsy te-hanalavitra ny olana, ary ny ezaka matetika ary fanirian’ny maro mpanorina praograma informatika dia hoe: mba tsy ho olana iray goavana koa ny fahamaroana?ny fitaovana materialy sy mpandrindra milina ambany fiasa.

Raha fotorina anefa amin’ity farany ity dia izao no zavatra hita. ?tsy ao amin’ny sehatra ekonomika ihany no tsy maintsy misokatra ny tsena, fa tsapa fa na aty amin’ny sehatra fitaovana informatika koa dia tsy maintsy misokatra ny fiasany?. Tsy iadin-kevitra ny amin’io aloha, ka noho izany ary; io zava-misy eo amin’ny sehatra vaha-olana (espace solution) io dia mitaky koa izany fiovana na fanampiana fomba fijery hafa ao anaty sehatra olana (espace probleme)...

Koa ankehitriny dia voaresaka etsy sy eroa ny amin’ny tamban-zotra informatika (reseau informatique), ka amin’izao fotoana izao izany dia voatery ny rehetra mitady fomba mahomby mba hahafahana manorina praograma mifandraika tsara amin’ny fiasan?io tamban-zotra malalaka io.

Dia ahoana ary ny hevitry ny tontolo Java amin’izany toe-zavatra miha-sarotra izany, eo amin’ny sehatrasa fampiharana ?

Raha jerena todika kely fotsiny aloha ny niandohan’ny Java, sy nampalaza azy fony nitsangana tamin’ny maty dia ireo antsoina hoe Applet izay tsy inona fa kilasy Java mihodina tanaty praograma fitetezana tranonkala. Nifanindry tamin’ny fiparitahan’ny internet ho an’ny sarambamben’ny olona koa mantsy io fiverenany io, ary satria tsy nanavaka milina manokana ny fiasany, fa rehefa misy JVM dia mandeha; noho izany ary dia nalaky tokoa ny fahombiazany tamin’izay fotoana izay. Taty aoriana moa ny nataon’ny Sun, dia ny mampitombina ilay Java ho tsara fototra amin’ny maha teknolojia fanorenana feno amin’ny sehatra genie logiciel azy. Taorian’ny version 1.1 dia nanomboka tafapetraka izay ezaka izay ary nantsoina hoe Java 2, ary hatreo dia nanomboka nivelatra tanteraka izy raha eo amin’ny sehatra fanorenana informatika no jerena.

Koa ankehitriny ary rehefa mampiasa io teknolojia Java io isika dia mizara roa lehibe ny fomba fampiasa azy, raha atao jery ankapobe :

  • Fanorenana vainga praograma mihodina mba ho mpanjifa na client
  • Fanorenana vainga praograma mihodina mba ho mpamatsy na serveur

Tsara marihina moa fa efa ela moa no nisy io fomba fijery rafitra mpanjifa-mpamatsy na client-serveur io, ary miseho amin’ny endriny maro ny fampiharana io fijery io, indrindra amin’ny tamban-zotra informatika,

Dia ahoana koa ary izany ny fifandraisan?ilay fomba fijery manasaraka rafitra fanorenana malaza amin’ny MVC, sy ity rafitra tamban-zotra mpamatsy-mpanjifa ity amin’ny tontolo Java ?

Mazava ho azy ary fa ny toetra lehibe sy iraisana na amin’ny lafiny mpamatsy, na mpanjifa dia hoe:

Tsy maintsy mihodina anaty JVM daholo ireo vainga amboarina ireo.

Ka ny maha-samihafa ny fisehoany dia hoe: JVM aiza no mihodina ireo kilasy; manao ahoana ny fivezivezen?ireo zavatra kirakiraina ary iza avy no mifehy ny fiasan?ireo kilasy.

Fanorenana lafiny Mpanjifa (cote client)

Mizara ho tetika roa rehefa mampiasa Java 2 :

  • Ireo kilasy manorina praograma mety miasa mahaleotena anaty JVM iray, ary ny fisehoany dia mihodina anatina fitoerana antsoina hoe: fenetre. Eto moa ireo kilasy rehetra dia mitoetra daholo ao amin’ilay milina ihodinan?ilay JVM, fa ny zavatra kirakiraina no tsy voafaritra ny tsy maintsy hitoerany.
  • Ireo kilasy mihodina anatina praograma mpitety tranonkala, ka ireo kilasy na ny fonosana misy azy ireo matetika dia mitoetra aloha amina milina misahana asana mpamatsy tranonkala (serveur web), ka rehefa misy mitady ny mpanjifa, vao mifindra any amin’ilay milina mpanjifa ireo kilasy, sy mihodina ao amin’ilay JVM?n?io milina io. (Za manokana aloha tsy dia tia mampiasa loatra io nentin-drazana Java io !)

Fanorenana lafiny Mpamatsy (cote serveur)

Ity indray moa ao amin’ny tontolo Java no nampitondraina ny anarana hoe J2EE izay tsy inona fa fanitarana ny Java 2 na JSE ihany mba ho afaka manolotra fitaovana maro sahaza ny fanorenana sy fanodinana praograma mifampizara asa sy mety miparitaka koa amina JVM anaty milina maro samihafa, mifandray amin’ny alalan’ny tamban-zotra informatika, na tsia.

Ny tena mampiavaka azy ity dia:

  • Ao amin’ilay JVM n?ilay milina no mitoetra sy mihodina ireo kilasy, saingy tsy voatery amin’io milina io ihany no miditra sy mivoaka ireo zavatra kirakiraina fa kosa mazana miparitaka amina milina maro samihafa afaka mifandray aminy.
  • Ireo milina mifandray na lavitra na akaiky, amin’ilay milina ihodinan?ireo kilasy ireo dia tsy voatery manana JVM dia efa afaka mampiasa ireo kilasy ireo ankolaka mba hahazoana vokatra (zava-misy ilaina amin’ny fampiharana tranonkala mahazatra io, satria ny asan?ireo kilasy dia ny mandefa any amin’ny mpanjifa ny vokatra anaty mari-soratra HTML: izany hoe na tsy misy JVM aza ireo milina mpanjifa dia tafita ihany ny vokatra).
  • Raha toa moa ka samy manana JVM ireo milina mifandray dia mazava hoa azy fa tsy voafetra mihitsy ny fifampizarana asa ataon?izireo. Ny antony mantsy dia satria samy afaka mandray ny endrika mpanjifa na mpamatsy daholo izany ireo milina rehetra mifandray, arakaraka ny fiasan?ireo kilasy mihodina amin’ny JVM tsirairay avy..
Raha dinihina ary ireo tetika fanorenana ireo dia hita fa sarotra lavitra ny fampiharana ny fanasarahan-drafitra amin’ny fanorenana lafiny mpamatsy, miohatra amin’ny fanorenana lafiny mpanjifa !

Dia andao ary hatomboka amin’ny mora indrindra izy raha izay no izy kah !
Hamboatra vainga kilasy afaka mihodina mahaleotena amin’ny JVM isika, ka ny fampiarahana ireo kilasy sasany efa vitantsika ihany no hanandramana azy?

Ka izao ary ny fampiasana ndeha ho vinavinaina sy haorintsika:

- Ilay kilasy ZavatraAzoKajiana.java (resaka faha-7), heverintsika hampiasaina hanambarana lahasoratra maro mifanesisesy
- Ilay kilasy TahirySoratraASCII.java (resaka faha-10), ho entintsika hitehirizina maharitra ireo lahasoratra vita hatrizay.
- Dia hamorona kilasy iray koa isika hamboatra ilay rafitra fanehoana (GUI), hanamora ny fampiasana ity praograma ity.

Ity farany ity sisa haorina dia feno ny rafitra ilaina amin’ny ankapobe, fa ny pitsopitsony hafa ho hita miandalana eo ihany.

Koa aleo ary tonga dia hasehontsika ilay endriny, avy eo isika mikaroka ireo kilasy na zavatra aseho mety hampiasaina, avy ao anaty fonosana java.awt na java.swing.

Ny rafitra fanehoana (GUI) :

image001.jpg

Tsy mila hazavaina angamba io raha ny fampiasana azy, satria rehefa tsindriana izany ilay bokotra Alefaso dia tokony hanampy ireo lahasoratra izay efa tao anaty fanehoana lahasoratra ambony izay rehetra voasoratra tatsy ambany. Tonga ao izy dia tokony tsy azo ovaina intsony ary izay no maha-samihafa loko ireo seho roa ireo.

Ary toa izao ilay kilasy tokony hanorina io fanehoana tsotra io:

package resakaObjet;
 
import java.awt.*;
import java.awt.event.* ;
import javax.swing.*;
 
public class SehoLahasoratra extends Frame
{
   Label lohateny1, lohateny2;
   Button bokotra1, bokotra2;
   TextArea tahirySoratra;
   TextArea lahasoratra;
 
   public SehoLahasoratra()
   {
/** Mandefa any amin'ny kilasy Frame rain'ity kilasy ity, io lohateny io
  */
       super("Fanoratana lahasoratra");
/* Fanorenana ireo zavatra rehetra haseho anaty fitoerana Frame
  */
       lohateny1 = new Label("Lahasoratra taloha :");
       tahirySoratra = new TextArea(20,100);
       lohateny2 = new Label("Lahasoratra vaovao :");
       lahasoratra = new TextArea(20,100);
       bokotra1 = new Button("Alefaso");
       bokotra2 = new Button("Fafao");
 
/** Fandaminana ny fipetrahana zavatra aseho anaty Frame, izay rain'ity kilasy ity
  * amin'ny alalan'ny LayoutManager LahasoratraLayout namboarina manokana !!
  * ho an'ity fampiasana ity.
  */
       setLayout(new LahasoratraLayout());
 
/** Fampidirana azireo anaty fitoerana efa voalamina; tsy maintsy hajaina tsara
  *  ny laharana fampidiranaazireo ao anaty fitoerana
  */
 
       add(lohateny1);       add(tahirySoratra);
       add(lohateny2); add(lahasoratra);
       add(bokotra1); add(bokotra2);
 
       pack();
/* Fametrahana haino tranga eo anivon'ilay fitoerana Frame
  */
       addWindowListener(this.new RindraToerana());
   }
 
/* Ireo getters sy setters amin'ity kilasy ity (ho fenoina miandalana eo ihany)
  */
 
   public TextArea getTahirySoratra()
   {
       return tahirySoratra;
   }
   public TextArea getLahasoratra()
   {
       return lahasoratra;
   }
 
/** Fametrahana mpihaino tranga amin'ireo zava-madinika aseho, ka mila jerena
  * ny tranga misoeho eo anivony (ireo bokotra roa: Alefaso sy Fafao)
  */
   public void setHainoTranga()
   {
       bokotra1.addActionListener(this.new RindraTranga());
       bokotra1.setActionCommand("1");
       bokotra2.addActionListener(this.new RindraTranga());
       bokotra2.setActionCommand("2");
   }
 
 
/** Kilasy anatiny mpandrindra tranga miseho eo anivon'ireo zava-madinika aseho
  * anaty fitoerana
  */
   private class RindraTranga implements ActionListener
   {
       public void actionPerformed(ActionEvent e)
       {
          String action = e.getActionCommand();
          int choix = Integer.parseInt(action);
          switch(choix)
          {
              case 1:
                 tahirySoratra.append(lahasoratra.getText());
                 tahirySoratra.append("\n\n");
                 lahasoratra.setText("");
                 break;
              case 2:
                 lahasoratra.setText("");
                 break;
          }
       }
   }
 
/** Kilasy anatiny natao handamina manokana ny  fitoerana Frame rain'ity kilasy ity.
  * Misy hetsika abstract 6 voalaza ao anaty interface LayoutManager izany,
  * tsy maintsy faritana feno ato amin'ity kilasy anatiny ity  Tsy za no nanoratra ireto fa nalaina avy
  * amin'ny navoakan'ny JavaGUI ireo hetsika voafaritra hifanaraka amin'ilay sary etsy ambony
  */
   private class LahasoratraLayout implements LayoutManager
   {
 
     public LahasoratraLayout()
     {
     }
 
     public void addLayoutComponent(String name, Component comp)
     {
     }
 
     public void removeLayoutComponent(Component comp)
     {
     }
 
     public Dimension preferredLayoutSize(Container parent)
     {
        Dimension dim = new Dimension(0, 0);
 
        Insets insets = parent.getInsets();
        dim.width = 494 + insets.left + insets.right;
        dim.height = 437 + insets.top + insets.bottom;
 
        return dim;
     }
 
     public Dimension minimumLayoutSize(Container parent)
     {
        Dimension dim = new Dimension(0, 0);
        return dim;
     }
 
     public void layoutContainer(Container parent)
     {
        Insets insets = parent.getInsets();
 
        Component c;
        c = parent.getComponent(0);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+8,176,24);}
        c = parent.getComponent(1);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+40,472,152);}
        c = parent.getComponent(2);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+200,184,24);}
        c = parent.getComponent(3);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+232,480,160);}
        c = parent.getComponent(4);
        if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+400,72,24);}
        c = parent.getComponent(5);
        if (c.isVisible()) {c.setBounds(insets.left+104,insets.top+400,72,24);}
     }
   }
 
/** Kilasy anatiny iray koa, izay natao handrindra indray izay tokony hatao rehefa
  * misy tranga miseho eo anivon'ny fitoerana Frame. Eto dia ny fanakatonana ny
  * fitoerana no henoina, ka ny hatao rehefa akatona ilay fitoerana no soratana
  * anaty hetsika.
  */
   private class RindraToerana extends WindowAdapter {
     public void windowClosing(WindowEvent ev)
     {
        System.exit(0);
     }
   }
 
/** Andrana fanodinana sy hijerena ny fiasan'ity kilasy ity.
  */
   static public void main(String arg[[]])
   {
     SehoLahasoratra test = new SehoLahasoratra();
     test.setHainoTranga();
     test.getTahirySoratra().setEditable(false);
     test.setVisible(true);
   }
}

Fanazavana:

Averina indray moa fa ity kilasy ity dia natao fotsiny ho fanehoana ihany ao anatin?ilay vinavina haorintsika, ka noho izany, ny tanjontsika dia hoe:

  • Ahoana ary ny hanorenana ilay kilasy tokony hampiseho fotsiny aloha iry sary ambony iry
  • Inona no tokony hatao rehefa misy ireo tranga eo anivon’ny zava-madinika aseho anaty fitoerana.

1. Ilay kilasy:

public class SehoLahasoratra extends Frame

Kilasy SehoLahasoratra no hataontsika anarany, ary ataontsika rainy avy hatrany ny kilasy Frame; ilaina tokoa mantsy ny toetra vokatr?izay fifandraisana-fandovana amin’ity kilasy ity sy ilay fitoerana Frame ao anaty API JSE.
Ireo toetra na attribut dia misy 6 izireo ary kilasy zava-madinika ao anaty API JSE daholo (Label roa, TextArea roa, Button roa)

2. Ny mpanorina na constructeur:

 public SehoLahasoratra()
    {
        super("Fanoratana lahasoratra");
        lohateny1 = new Label("Lahasoratra taloha :");
        tahirySoratra = new TextArea(20,100);
        lohateny2 = new Label("Lahasoratra vaovao :");
        lahasoratra = new TextArea(20,100);
        bokotra1 = new Button("Alefaso");
        bokotra2 = new Button("Fafao");
 
        setLayout(new LahasoratraLayout());
 
        add(lohateny1);         add(tahirySoratra);
        add(lohateny2); add(lahasoratra);
        add(bokotra1); add(bokotra2);
 
        pack();
 
        addWindowListener(this.new RindraToerana());
    }

Amin’ny kilasy mpanorina fanehoana na GUI dia mazana ao anaty constructeur no tena misy ny fametrapetrahana tsara ireo zava-madinika maro anaty fitoerana.

  • Eto izany no antsoina ireo mpanorina ireo zava-madinika nalaina tanaty API JSE
  • Eto koa no raiketina amin’ilay fitoerana ilay rafim-pandaminana ny fipetrahana zava-madinika ao anatiny.

Kilasy anatiny antsoina LahasoratraLayout no namaritana azy:

? Tsara fantatra, fa izay ao anatin?io kilasy LahasoratraLayout io dia tsy za no nanoratra azy, fa nisy ?mpanampy fanorenana an-kijery fotsiny? na assistant visuel izay no fampiasako, raha te-hahazo famaritana tsara sy haingana ireo hetsika tsy maintsy fenoina isika ao amin’ilay interface LayoutManager lovain?io kilasy mpandrindra fitoerana io. JavaGUI no anarany, saingy mihodina amin’ny Win$ fotsiny i nedala (tsy tadidiko intsony ilay boay namboatra azy, sy ny nahazoako azy fa efa elabe?)

3. Ilay mpihaino tranga @ zava-madinika:

public void setHainoTranga()
  {
    bokotra1.addActionListener(this.new RindraTranga());
    bokotra1.setActionCommand("1");
    bokotra2.addActionListener(this.new RindraTranga());
    bokotra2.setActionCommand("2");
  }

Eto dia somary ovaintsika ny tetika ka andao handramana hatao anaty hetsika hafa mihitsy, ny fametrahana amin’ireo zava-madinika ny fihainoana tranga miseho eo anivon?izireo. Koa satria misy maro izireo no arahina akaiky dia omentsika marika fotsiny izay tranga miseho amin’ny tsirairay.

- hetsika addActionListener(ActionListener) mametraka ilay mpihaino
- hetsika setActionCommand(String) mametraka marika karazana soratra (String) amin’io zava-madinika io.

Bokotra daholo moa ireo arahina akaiky ireo. Ary sehoHainoTranga() ilay hetsika.

Ka izao no ilaina ireo marika ireo:
Raha ohatra ka misy tranga miseho eo anivon?ireo bokotra roa ireo dia ireo marika ireo no manavaka hoe iza amin’ireo bokotra no notsindriana. Izany hoe any anaty mpandrindra tranga isika,dia miantso fotsiny ny hetsika getActionCommand(), izay hita ao anaty kilasy ActionEvent miasa miaraka amin’ny interface ActionListener, ary koa argument miditra ao anaty hetsika actionPerformed(ActionEvent) izay isika ihany no hameno azy.

private class RindraTranga implements ActionListener
  {
      public void actionPerformed(ActionEvent e)
      {
         String action = e.getActionCommand(); // Maka ilay marika miaraka amin'ilay tranga
         int choix = Integer.parseInt(action); // Mamadika azy ho tarehimarika azo isaina
         switch(choix)
         {
             case 1:
               tahirySoratra.append(lahasoratra.getText());
               tahirySoratra.append("\n\n");
               lahasoratra.setText("");
               break;
             case 2:
               lahasoratra.setText("");
               break;
         }
      }
  }

Dia hita amin’ireo safidy roa voafaritra eto ary ny tokony hatao araka izay marika voaraintsika sy mifanaraka amin’ilay bokotra notsindriana !!!

  • Case 1: (bokotra Alefaso) Maka izay ao anaty zava-madinika ambany dia mandefa izany any amin’ilay ambony, dia diovina ilay tato ambany avy eo.
    * Case 2: (bokotra Fafao)
    Diovina fotsiny izay voasoratra ato ambany

4. Ilay mpihaino tranga @ fitoerana:

private class RindraToerana extends WindowAdapter {
    public void windowClosing(WindowEvent ev)
    {
     System.exit(0);
    }
  }

Ny mpihaino tranga @ fitoerana dia misy roa no azo ampiasaina:

  • interface WindowListener izay misy hetsika 7 izy izay no tsy maintsy faritana feno ao amin’ny kilasinao; koa raha vitsy no ilaina amin’ireo hestika 7 ireo, dia aleo tsy mampiasa io kah.
  • kilasy WindowAdapter izay efa mamaritra avy hatrany ireo hetsika rehetra ireo, ka ny ataonao fotsiny sisa dia ny manitsaka fotsiny amin’ny izay soratanao ao anaty kilasy (toa io ambony io amin’ny hetsika windowClosing()),rehefa nampifandraisina amin’ny fandovana aminy ny kilasinao.

Vokatr’izay moa dia rehefa mihodina ny praograma, dia azontsika atao ny mampiasa ny fampiatoana mivantana ny praogramantsika amin’ny alalan’ny fanidiana ilay fitoerana Frame.

(hatreto aloha ary e !)


Ny niezahana moa tato dia hoe aleo hapetraka tsara daholo ary aloha ireo biriky fanorenana fototra, rehefa nampiditra ilay jery ankapobe tetsy ambony isika. Koa dia samia mazoto homana daholo ary e.

(Hitohy ...)

 

andaohiresakaobjetfahaxii.txt · Novaina farany:: 2008/09/11 12:43