1 / 16

Concurenta in Swing

Concurenta in Swing. Scop: crearea unei inrefete grafice sensibila permanent actiunilor utilizatorului - sa nu devina "unresponsive". In Swing sunt gestionate trei tipuri de fire: fire initiale ( Initial Threads ) in care se executa codul de inceput al aplicatiei

ulfah
Download Presentation

Concurenta in Swing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Concurenta in Swing Scop: crearea unei inrefete grafice sensibila permanent actiunilor utilizatorului - sa nu devina "unresponsive". In Swing sunt gestionate trei tipuri de fire: fire initiale (Initial Threads) in care se executa codul de inceput al aplicatiei Event Dispatch Thread (EDT)- fir de fundal pe care se executa gestiunea evenimentelor (event - handling). O mare parte din codul de intearctiune cu Swing se executa pe acest fir fire de background (worker threads) - fire de background care executa sarcini consumatoare de timp

  2. Executie de cod in EDT se poate face prin urmatoarele metode statice ale clasei utilitare SwingUtilities: public static void invokeAndWait (Runnable doRun) throws InterruptedException, InvocationTargetException; // Executie de cod direct in EDT. Codul executat este continut de metoda run() a obiectului Runnable primit ca parametru si se executa imediat si sincron public static void invokeLater (Runnable doRun); // Plasare cod in EDT in coada public static boolean isEventDispatchThread();// Test de aparteneta cod la EDT

  3. Printarea

  4. Etapele printării • Scrierea unei clase care implementează interfaţa java.awt.print.Printable • Redefinirea metodeiprint a interfeţeiPrintablein cadrul clasei create la punctul 1. Continutul grafic al paginii printate va fi generat cu ajutorul obiectului Graphics (vezi definirea metodei print). Este utila translatarea in spatiul de vizualizare al paginii printr-o secventa: Graphics2D g2d = (Graphics2D)g; g2d.translate(pf.getImageableX(), pf.getImageableY()); • Instanţierea unui obiect din clasa PrinterJob utilizând metoda statică getPrinterJob: PrinterJob job = PrinterJob.getPrinterJob(); • Stabilirea atributelor paginii folosind obiecte PrintRequestAttributeSet: PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(MediaSizeName.ISO_A4); ...

  5. Instanţierea unui obiect PageFormat cu atributele paginii, folosind metoda getPageFormat a clasei PrinterJob: PageFormat pf=job.getPageFormat(aset); pf.setOrientation(PageFormat.PORTRAIT); Invocarea metodei setPrintable având ca parametrii obiectul de tip Printable şi obiectul de tip PageFormat: job.setPrintable(printable,pf); Lansarea dialogului de printare prin invocarea metodei printDialog: boolean ok = job.printDialog(); Lansarea imprimării prin invocarea metodei print: if (ok) try { job.print();} catch (PrinterException ex) {}

  6. int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException; graphics - o referinţă la contextul grafic pageFormat - referinţă la un obiect PageFormat care conţine parametrii paginii imprimate pageIndex - numărul paginii imprimate Rezultate intoarse: static final int NO_SUCH_PAGE – indexulpaginii curente este necorespunzător şi pagina nu poate fi imprimată static final int PAGE_EXISTS–pagina curentăpoate fi imprimată

  7. Construirea rapoartelor Java utilizand Apache Formatting Objects Processor(FOP)

  8. Structura unei aplicatii • Construirea unui fisier de formatare XSL-FO pentru a reprezenta datele intr-un format tabelar • Scrierea codului Java care extrage informatia dintr-o sursa de date si construieste un fisier XML in conformitate cu o structura dorita • Lansarea aplicatiei FOP pentru a genera fisierul PDF http://xmlgraphics.apache.org/fop/

  9. Elemente de programare in retea

  10. CLIENT 1 CLIENT N SERVER ServerSocket Socket 1 Socket Socket N Socket IS IS IS IS OS OS OS OS Conexiuni TCP - Arhitectura aplicatiilor

  11. Conexiuni TCP Etapele crearii unei aplicatii server: se creaza o instanta a clasei ServerSocket care asteapta la un port specificat se accepta conexiunea printr-un raspuns al metodei accept() se creaza obiectul Socket pentru comunicare cu aplicatia client

  12. Clase si interfete utilizate Constructori ServerSocket: • public ServerSocket() throws IOException; • public ServerSocket(int port) throws IOException; • public ServerSocket(int port, int backlog) throws IOException; • public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException; unde: port - numarul portului local la care se conecteaza. Valoarea 0 inseamna ca numarul de port este alocat automat backlog - dimensiunea maxima a cozii de conexiuni care pot fi acceptate. Implicit aceasta valoare este 50 Acceptarea unei conexiuni: • public Socketaccept() throws IOException; // trece firul current intr-o stare de asteptare pentru solicitare de conexiune din partea unui client.

  13. Alte metode ServerSocket public void setSoTimeout(int timeout) throws SocketException; // Specificarea unui timp de asteptare la accept. Depasirea acestuia duce la aruncarea unei exceptii de tip java.net.SocketTimeoutException. public int getSoTimeout() throws IOException; // Intoarce timpul de asteptare. Daca este 0 atunci nu a fost in prealabil modificata optiunea de SoTimeout. public int getLocalPort(); // Intoarce numarul de port la care asculta socketul. public InetAddress getInetAddress(); // Intoarce adresa masinii locale. public void close() throws IOException; // Inchide socketul current. Orice fir blocat intr-un accept al acestui socket va arunca SocketException.

  14. InetAdress este o clasa folosita pentru impachetarea conceptului de adresa IP. Metode public static InetAddress getByAddress(byte[] addr) throws UnknownHostException; // Creare adresa prin furnizarea Ip-ului sub forma de sir de octeti public static InetAddress getByName(String host) throws UnknownHostException; // idem pornind de la numele de host public byte[] getAddress(); // Intoarce Ip-ul sub forma de sir de octeti public String getHostAddress(); // Intoarce Ip-ul sub forma textuala public String getHostName(); // Intoarce numele masinii (Exp: latium.intra.net.ase.ro)

  15. Obiectele din clasa Socket sunt cele prin care se realizeaza comunicarea prupriuzisa. Constructori Socket: • public Socket() ; //neconectat • public Socket(String host, int port) throws UnknownHostException, IOException ; // conectat la masina si portul specificate • public Socket(InetAddress address, int port) throws IOException • public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException

  16. Crearea fluxurilor de comunicare (metode Socket): • public InputStreamgetInputStream() throws IOException; • public OutputStreamgetOutputStream() throws IOException;

More Related