Documente Academic
Documente Profesional
Documente Cultură
Metoda showStatus() a clasei Applet v permite s afiai un ir n bara de stare a browserului care ruleaz applet-ul. Putei folosi aceast metod pentru afiarea mesajelor de eroare, a legturilor, pentru indicaii sau pentru alte mesaje de stare. Aceast metod poate fi apelat printr-o instruciune de genul: getAppletContext().showStatus(Pentru a ncepe, executati clic pe applet); Metoda getAppletContext() permite applet-ului dumneavoastr s acceseze caracteristicile browserului care l-a ncrcat. Metoda showStatus() folosete acest mecanism pentru a afia mesaje de stare.
System.out.println("Adresa URL incorecta: " + unURL) ; } O dat obinut obiectul URL, tot ceea ce mai trebuie s facei este s l transmitei browserului; drept urmare, acesta va ncarca adresa respectiv: getAppletContext().showDocument(unURL); Browserul ce conine un applet Java cu codul prezentat mai sus va ncrca i va afia documentul de la adresa URL respectiv. Aplicaia urmtoare prezint dou clase: ButonLink i o clas ajuttoare Marcaj. Appletul ButonLink afieaz trei butoane care indic trei locaii Web diferite; dac se execut clic pe aceste butoane, va fi ncrcat documentul de la locaia respectiv. Textul surs al aplicaiei este prezentat n continuare: import java.awt.*; import java.net.*; public class ButonLink extends java.applet.Applet { Marcaj ListaMarcaje[] = new Marcaj[3]; public void init() { ListaMarcaje[0] = new Marcaj("Catalog auto", "http://www.masini.ro"); ListaMarcaje[1] = new Marcaj("Macmillan Computer Publishing", "http://www.mcp.com"); ListaMarcaje[2]= new Marcaj("JavaSoft", "http://java.sun.com"); GridLayout gl = new GridLayout(ListaMarcaje.length, 1, 10, 10); setLayout(gl); for (int i = 0; i < ListaMarcaje.length; i++) { add(new Button(ListaMarcaje[i].name)); } } public boolean action(Event evt, Object arg) { if (evt.target instanceof Button) { saltLa( (String)arg ); return true; } else return false; } void saltLa(String name) { URL theURL = null; for (int i = 0; i < ListaMarcaje.length; i++) { if (name.equals(ListaMarcaje[i].name)) theURL = ListaMarcaje[i].url; } if (theURL != null) getAppletContext().showDocument(theURL); } } class Marcaj {
String name; URL url; Marcaj(String name, String theURL) { this.name = name; try { this.url = new URL(theURL); } catch (MalformedURLException e) { System.out.println("URL inexistent: " + theURL); } } }
lucru: // accesati applet-ul destinatar Applet destinatar = (SubclasaMeaApplet)getAppletContext(). getApplet("Destinatar); // comandati-i sa se actualizeze destinatar.actualizare(text, valoare); n acest exemplu s-a folosit metoda getApplet() pentru a se obine o referin ctre applet-ul cu numele "Destinatar". Observai c obiectul returnat de getApplet() este o instan a clasei generice Applet; vei dori, probabil, s l convertii prin cast ctre o instan a subclasei dumneavoastr. O dat obinut referina ctre applet, putei apela apoi metodele sale ca i cnd ar fi orice alt obiect din mediul dumneavoastr de execuie. Aici, de exemplu, dac ambele applet-uri conin o metod denumit actualizare(), putei comanda applet-ului destinatar s se actualizeze singur folosind informaiile din applet-ul curent. Denumirea applet-urilor i referirea lor prin metodele prezentate n aceast seciune permit comunicarea i sincronizarea applet-urilor, obinndu-se astfel un comportament uniform pentru toate applet-urile din pagin.
DataFlavor(Class, String) creeaz un aspect de date care reprezint o clas Java. Argumentul String reprezint numele descriptiv al aspectului. Obiectul DataFlavor rezultat va avea tipul MIME application/x-javaserializedobject. DataFlavor (String, String) creeaz un aspect de date care reprezint un tip MIME, unde primul argument este tipul MIME, iar al doilea reprezint numele descriptiv. Clasa care reprezint acest aspect de date va fi InputStream. Dup ce ai obinut acest obiect cu aspectul de date, putei interoga valorile sale sau putei compara tipurile sale MIME cu cele ale altor obiecte aspect de date pentru a negocia modul cum vor fi transferate datele. Aspectele de date sunt folosite de obiectele transferabile, care sunt definite folosind interfaa Transferable. Un obiect transferabil va conine datele ce urmeaz a fi transferate, precum i instane pentru fiecare dintre aspectele de date care reprezint obiectul respectiv. Pentru ca obiectul dumneavoastr transferabil s poat fi ntr-adevr negociat i transferat, trebuie s implementai i metodele getTransferDataFlavors(), isDataFlavorSupported() i getTransferData(). (Pentru detalii, consultai documentaia interfeei Transferable.) Clasa StringSelection implementeaz un obiect transferabil simplu, pentru transferul irurilor de text, folosind obiecte DataFlavor i interfaa Transferable. Reinei c obiectele transferabile sunt folosite pentru ncapsularea datelor i pentru descrierea formatului (aspectului) acestora; ele nu au nici un rol n formatarea datelor, la nici una dintre prile implicate n transfer. Aceasta este responsabilitatea programului dumneavoastr atunci cnd folosii zona Clipboard pentru a obine date de la o surs.
4. Apelai metoda setContents() a zonei Clipboard, avnd ca argumente obiectul transferabil i obiectul care implementeaz interfaa ClipboardOwner. Folosind aceast metod, obiectul dumneavoastr i-a adjudecat" posesia asupra zonei Clipboard. 5. Metoda lostOwnership() este apelat atunci cnd un alt obiect preia controlul asupra zonei Clipboard. Aceast metod trebuie implementat dac dorii s realizai o anumit aciune la apariia evenimentului (sau putei crea o metod vid atund cnd nu v intereseaz dac cineva a nlocuit coninutul zonei Clipboard). Pentru implementarea unei operaii de lipire (paste) trebuie parcurse urmtoarele etape: 1. Folosii metoda getContents() a clasei Clipboard, care returneaz un obiect transferabil. 2. Folosii metoda getTransferDataFlavors() a obiectului transferabil pentru a afla ce aspecte de date suporta obiectul transferabil. Stabilii ce aspect vei folosi. 3. Accesai datele conform aspectului dorit, folosind metoda getTransferData() a obiectului transferabil. Un astfel de exemplu este prezentat n continuare. import java.awt.*; import java.awt.event.*; import java.awt.datatransfer.*; public class CopyPaste extends Frame implements ActionListener, ClipboardOwner { Button copy, paste; TextField tfCopy, tfPaste; Clipboard clip; public static void main(String[] arguments) { CopyPaste test = new CopyPaste(); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; test.addWindowListener(l); test.setSize(200, 150); test.show(); } CopyPaste() { super("Copy and Paste"); clip = getToolkit().getSystemClipboard(); FlowLayout flo = new FlowLayout(); setLayout(flo); copy = new Button("Copy From"); tfCopy = new TextField(25); paste = new Button("Paste To"); tfPaste = new TextField(25); copy.addActionListener(this); paste.addActionListener(this); paste.setEnabled(false);
add(copy); add(tfCopy); add(paste); add(tfPaste); } void doCopy() { if (tfCopy.getText() != null) { String txt = tfCopy.getText(); StringSelection trans = new StringSelection(txt); clip.setContents(trans, this); paste.setEnabled(true); } } void doPaste() { Transferable toPaste = clip.getContents(this); if (toPaste != null) { try { String txt = (String)toPaste.getTransferData( DataFlavor.stringFlavor); tfPaste.setText(txt); paste.setEnabled(false); } catch (Exception e) { System.out.println("Error -- " + e.toString()); } } } public void actionPerformed(ActionEvent e) { if (e.getSource() == copy) doCopy(); else if (e.getSource() == paste) doPaste(); } public void lostOwnership(Clipboard clip, Transferable contents) { } }