Ahoana indray ary ao amin’ny tontolo Java ny fampiasana ireo vainga tokony hikarakara antsakany sy andavany ny fanehoana ivelany ny praograma rehefa hampihodinana izy eo amin’ny sehatra hilana azy ?
Io moa ilay antsoina hoe : presentation na GUI (graphic unit interface) amin’ny andalan-drafitra fanorenana praograma infrormatika.
Mazava ho azy ary araka ny efa voalaza tany aloha, fa amin’ny Java dia Objet daholo ny raha jiaby ; ka noho izany ary dia azo vinaniana fa tsy maintsy anaty fonosana voafaritra tsara no hitadiavana ireo kilasy hitrandrahana ity fanehoana ity.
Tonga dia tsara fantarina ary fa roa ny fonosana ao amin’ny API ?ny JSE no itadiavana ireo kilasy rehetra hilaina raha hanorina vainga mpikarakara fanehoana isika, dia : java.awt izay taloha indrindra, fa taty aoriana moa dia nihatsara izy io ka nampian?i Sun ny fonosana javax.swing. Tsy fonosana misaraka anefa izy roa ireo, satria raha jerena akaiky ny fifandraisany dia ho tsapa fa ireo kilasy rehetra dia mifandray ny ankamaroany amin’ny alalan’ny fandovana : izany hoe ny ankamaroan’ny kilasy hita ao anaty javax.swing dia mandova toetra maro amin’ireo izay voafaritra tary amin’ny kilasy hita amin’ny java.awt
Mba hanamora ny andrana hatao ary amin’ity fanehoana ity, dia ireto no rafitra tsara fantatra raha hiatrika ny fampiasana ny fonosana roa ireo isika :
Dia tadidio koa ary fa ao anaty fonosana javax.swing dia mazana tovanana J fotsiny ireo anarana kilasy widgets tanaty java.awt ireo (ohatra JTextField ao anaty javax.swing) ; dia mora tadidy izay kilasy ilainao raha te-hampiasa ireo any amin’ny javax.swing ianao. Ireo zavatra aseho hita ao anaty javax.swing mantsy tsara kokoa noho izay aorina amin’ireo izay ao anaty java.awt ?
Ohatra : Ny kilasy TextField dia misy hetsika antsoina hoe addActionListener ao aminy ; azo ametrahana fihainoana zava-mitranga eo anivony, io hetsika io. Dia tsy maintsy isika manao implements ny interface ActionListener, (izay tsy misy afatsy hetsika abstract iray antsoina hoe : actionPerformed(?)) amin’ny kilasy hasaintsika hitantana ireo tranga mety hiseho rehetra ⇒ dia tsy maintsy koa izany isika mamaritra izay hatao ao anatin?io hetsika io ao amin’ilay kilasintsika mpitantana tranga miseho. Vokany : raha vao misy zava-mitranga izany ao amin’ilay Objet TextField (ohatra : soratra ovaina amin’ny fanindriana soratra milina ; clavier), dia mampandeha avy hatrany izay ao anaty hetsika actionPerformed(?) izay tranga izay, amin’ilay kilasy mpitantana.
Raha atao jery ankapobe izany ny resaka fanehoana na GUI amin’ny Java, dia ireo rafitra ambony ireo no tokony ho atao an-tsaina foana, satria raha ny API graphique avy hatrany anie no hidirana tsirairay ireo kilasy amin’izy io dia eo isika no raisina. Za aloha dia tena fanina mihitsy, fony mbola nitifitra voalohany, fa aleo dia apetraka amin’ny hoe: toa izao ny seho tiana hatranga de lasa amin’izay mikaroka ireo widgets na container ao anaty API mety hanorenana ilay seho tiana isika, na fomba mahomby koa anie ny tonga dia mibata ireo vainga kilasy henjana fiasa avoakan?ireo mpanorina an-kijery fotsiny (assembleur visuel de composant).
Ity farany ity no fika hitako aloha hanafainganana ny fanorenana haingana ity andalan-drafitra fanehoana ity ; indrindra moa raha voafehy tsara ny fisarahana amin’ireo andalan-drafitra amin’ny fanorenana informatika atao.
Koa mba hanehoana fotsiny ireo voalaza ireo ary, dia tonga dia hasiantsika ohatra tsotra kely hatao fampidirana amin’ity lafiny fanehoana ity.
package resakaObjet; import java.awt.*; // Ny fonosana misy ireo kilasy zavatra aseho (zava-madinika sy fitoerana) import java.awt.event.* ; // Ny fonosana hangalana ireo kilasy manodidina ny tranga anivon'ny zavatra aseho public class OhatraTextField { TextField sehoSoratra; // Objet fandraisana sy fanehoana soratra public OhatraTextField() // Constructeur- n?ity kilasy ity { sehoSoratra = new TextField(50); // Constructeur-ny TextField ao anaty API io } public TextField getSehoSoratra() // Getters mahazatra; mamerina TextField ihany { return sehoSoratra; } public void setSehoSoratra(TextField seho) // Setters mahazatra, mandray Objet TextField { sehoSoratra = seho; } private class RindraTranga implements ActionListener // Ity ilay kilasy mpandrindra tranga miseho { public void actionPerformed(ActionEvent e) // ilay hetsika miasa rehefa misy ny tranga { // Mamadika ho renintsoratra ireo izay ao anaty attribut sehoSoratra, dia aseho ho hita ny vokatra sehoSoratra.setText(sehoSoratra.getText().toUpperCase()); } } static public void main(String arg[[]]) { OhatraTextField sehoAndrana = new OhatraTextField(); // Objet-n?ity kilasy OhatraTextField ity Frame sehoFitoerana = new Frame("Andrana TextField"); // Karazana fitoerana iray Frame sehoFitoerana.setLayout(new FlowLayout(FlowLayout.LEFT)); // Fandaminana ny fitoerana // Fametrahana ilay mpihaino tranga miseho amin'ilay zava-madinika TextField sehoAndrana.getSehoSoratra().addActionListener(sehoAndrana.new RindraTranga()); sehoFitoerana.add(sehoAndrana.getSehoSoratra()); // Apetraka anaty fitoerana ilay TextField sehoFitoerana.pack(); // Afitina ilay haben'ny fitoerana mba ho sahaza ireo zava-madinika ao anatiny sehoFitoerana.setVisible(true); // Atranga ho hitamaso ireo zavatra aseho rehetra anaty fitoerana } }
Fanazavana:
OhatraTextField sehoAndrana = new OhatraTextField(); // TextField no ao anatin?io Objet io Frame sehoFitoerana = new Frame("Andrana TextField"); // Karazana fitoerana iray Frame
sehoFitoerana.setLayout(new FlowLayout(FlowLayout.LEFT)); // Fandaminana ny fitoerana
// Fametrahana ilay mpihaino tranga miseho amin'ilay zava-madinika TextField sehoAndrana.getSehoSoratra().addActionListener(sehoAndrana.new RindraTranga());
Ity fomba fanoratra ity moa dia efa hitantsika tany aloha ihany, nefa na izany aza dia andao hasina kozy kely ihany:
Ilay kilasy mpandrindra tranga miseho eo anivon?ireo zavatra aseho, kosa etsy andaniny
private class RindraTranga implements ActionListener // Ity ilay kilasy mpandrindra tranga miseho { public void actionPerformed(ActionEvent e) // ilay hetsika miasa rehefa misy ny tranga { // Mamadika ho renintsoratra ireo izay ao anaty attribut sehoSoratra, dia aseho ho hita ny vokatra sehoSoratra.setText(sehoSoratra.getText().toUpperCase()); } }
Hita amin’io ary fa karazana ActionListener ihany izany io sehoAndrana.new RindraTranga() io raha tena fotorona satria
Dia mety tsara izany ilay soratra :
sehoAndrana.getSehoSoratra().addActionListener(sehoAndrana.new RindraTranga());
Ny amin’ity indray:
sehoFitoerana.add(sehoAndrana.getSehoSoratra()); // Apetraka anaty fitoerana ilay TextField
dia mametraka ao anaty fitoerana sehoFitoerana ilay TextField ao anaty Objet OhatraTextField sehoAndrana
Resultat du lancement:
Avant la frappe de la touche ENTREE
Apres la frappe de la touche ENTREE
(Hitohy ...)