1 / 26

public class Applet extends Panel

public class Applet extends Panel public class JApplet extends Applet implements Accessible , RootPaneContainer public void init () public void start () public void stop () public void destroy () public void paint ( Graphics  g) public void repaint ().

wolfe
Download Presentation

public class Applet extends Panel

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. public class Applet extends Panel public class JApplet extends Appletimplements Accessible, RootPaneContainer • public void init() • public void start() • public void stop() • public void destroy() • public void paint(Graphics g) • public void repaint()

  2. Alte metode ale clasei Applet • public AppletContextgetAppletContext() ; • public boolean isActive() ; • public URLgetDocumentBase(); • public URLgetCodeBase() ; • public StringgetParameter(String name) ; • public void resize(int width, int height) ; • public void showStatus(String msg) ; • public ImagegetImage(URL url,String numeF); • public AudioClipgetAudioClip(URL url,String numeF); • public StringgetAppletInfo() ;

  3. Contextul unui aplet public interface AppletContext • AppletgetApplet(String name); • Enumeration<Applet> getApplets(); • void showDocument(URL url) ; • void showDocument(URL url, String target); • Target: "_self" , "_parent" , "_top" , "_blank" , name

  4. Java Swing Caracteristici: • Bibliotecă Java , fără cod nativ • Comportare independentă de platformă • Personalizare • Prototipizarea interfeţei grafice • Componente reutilizabile – Beans • Utilizarea filosofiei MVC (Model View Controller)

  5. Model View Controller Concept de proiectare a interfeţei grafice constând în structurarea unei componente în 3 părţi: modelul, aspectul, comportamentul • Modelul – conţine datele care se vizualizează sau stări ale vizualizării • Aspectul (vizualizarea) – rezumă aspectul grafic al componentei • Comportamentul – relevă modul de reacţie al componentei la stimuli externi

  6. Look And Feel Prin LookAndFeel se defineste un stil grafic asociat interfetei grafice Java-Swing. Platforma standard Windows (jdk 1.7 Win) are definite patru stiluri: Metal, Motif, Windows și Nimbus Implementari de baza: public abstract class LookAndFeel extends Object; public abstract class BasicLookAndFeel extends LookAndFeel implements Serializable; public class MetalLookAndFeel extends BasicLookAndFeel; public class SynthLookAndFeel extends BasicLookAndFeel; // da posibilitatea crearii unui stil personalizat prin descrieri in fisiere XML public class NimbusLookAndFeel extends SynthLookAndFeel; Alte implementari: com.sun.java.swing.plaf.motif.MotifLookAndFeel com.sun.java.swing.plaf.windows.WindowsLookAndFeel

  7. Gestionarea stilurilor se face prin metode statice ale clasei UIManager. Tipuri de operatiuni: Incarcarea plug-in-ului: public static void setLookAndFeel(LookAndFeel newLookAndFeel) throws UnsupportedLookAndFeelException public static void setLookAndFeel(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException; Informatii privind stilurile disponibile: public static StringgetCrossPlatformLookAndFeelClassName() public static StringgetSystemLookAndFeelClassName() public static UIManager.LookAndFeelInfo[] getInstalledLookAndFeels() public static ComponentUIgetUI(JComponent target) ; // intoarce referinta la un obiect care defineste stilul grafic pentru o componenta

  8. UI Delegate Varianta MVC implementată în Swing constând în descrierea aspectului şi comportamentului împreună, într-o singură clasă numităDelegate. Rădăcina claselor Delegate ale componentelor Swing este descrisa in pachetul javax.swing.plaf: public abstract class ComponentUIextends Object; Clase derivate (abstracte): javax.swing.plaf.ButtonUI, javax.swing.plaf.LabelUI, ... Extensiile pentru aceste clase sunt facute pe stiluri grafice. Exemplu: public class MetalButtonUI extends BasicButtonUI; // extensia pentru buton facuta in pachetul javax.swing.plaf.metal Obţinerea unei referinţe la un obiect Delegate pentruo anumită componentă se face prin metoda statica createUI a clasei ComponentUI: public static ComponentUIcreateUI(JComponent c) ;

  9. Componentele isi asociază un delegat prin metoda clasei JComponent: protected void setUI(ComponentUI newUI); Metoda face initializarea campului de tip ComponentUI (delegat) declarat la nivelul clasei JComponent: protected ComponentUIui; Metoda setUI este suprascrisa de clasele derivate. De exemplu pentru eticheta (JLabel) suprascrierea este facuta astfel: public void setUI(LabelUI ui){ super.setUI(ui); } Clasa JLabel (si celelalte derivate JComponent) are definite si metode care furnizeaza referinta la delegat sau schimba delegatul: public LabelUI getUI() { return (LabelUI)ui; } public void updateUI() { setUI((LabelUI)UIManager.getUI(this); }

  10. Exemplu stabilire delegat Windows pentru o componentă JButton: JButton buton=new JButton("Buton"); buton.setUI((WindowsButtonUI)WindowsButtonUI.createUI(buton)); Actualizarea in cascada a stilului asociat unei componente se face printr-o metoda statica a clasei utilitare SwingUtilities : public static void updateComponentTreeUI(Component c); (exemplu - LookAndFeel)

  11. Modelul de date Obiect care încapsulează datele componentei şi aparţine unei clase care implementează o interfaţă specifică tipului de model Obţinerea unei referinţe la modelul de date al unei componente se face prin metodagetModel() a componentei. Schimbarea modelului se face prin metodasetModel(modelNou). Modelele Swing sunt construite in majoritate respectand urmatoarele reguli de denominare: • Implementarea standard a modelului: “Default”+nume_model • Clasa adaptor asociata: “Abstract”+nume_model • Evenimente generate: nume_model+”Event” • Ascultatori: nume_model+”Listener”

  12. Construirea modelelor proprii Sunt trei posibilitati de a construi un model propriu: Implementarea interfetei de baza a modelului. Prin aceasta modalitate se poate crea un model complet particularizat dar printr-un efort mare. Extinderea clasei adaptor (clasa Abstract). Este obligatorie doar implementarea metodelor abstract. Pot fi pastrate/modificate implementarile deja facute si pot fi adaugate noi functionalitati. Extinderea clasei Default. Nu este obligatorie implementarea vreunei functionalitati ci se pot face doar modificari/adaugari de functionalitate la modelul standard.

  13. Model: DocumentComponente: toate componentele text public interface Document ; // interfata de baza public abstract class AbstractDocument extends Object implements Document, Serializable; // implementare de baza public class PlainDocument extends AbstractDocument; // implementarea standard Metoda care trebuie suprascrisa pentru o implmenetare particulara: public void insertString(int offs, String str, AttributeSet a) throws BadLocationException; // offs este pozitia la care se face insertia, str este sirul inserat, a reprezinta caracteristicile textului inserat

  14. Gestiunea modificarilor de text public interface DocumentEvent; // Notificare asupra schimbarilor din text int getOffset(); // pozitia in care incepe o modificare int getLength(); // lungimea modificarii facute Document getDocument(); // intoarce modelul Document sursa public interface DocumentListener extends EventListener; Metode ale interfetei: void insertUpdate(DocumentEvent e); // trateaza inserarea in text void removeUpdate(DocumentEvent e); // trateaza stergerea din text void changedUpdate(DocumentEvent e) ; // modificare proprietati Gestiunea cursorului public interface CaretListener extends EventListener; // ascultator public abstract class CaretEvent extends EventObject; // Eveniment creat la schimbarea cursorului si/sau selectiei public abstract int getDot(); // pozitie cursor public abstract int getMark(); // preia pozitia ultimei selectii

  15. JFormattedTextField Componenta utilizata in formatare şi validare date. Asocierea modelului cu un tip de dată se prin intermediul unor clase formator: DateFormatter, NumberFormater, MaskFormater - derivate din AbstractFormatter Constructori: public JFormattedTextField(); // Fara informatii de formatare. Aceste vor fi stabilite ulterior public JFormattedTextField(Format format); // Este furnizat sablonul pentru formator public JFormattedTextField(AbstractFormatter formatter); // Este furnizat formatorul public JFormattedTextField(AbstractFormatterFactory factory); // Este furnizat un creator/generator de formatori (factory). Metode al clasei: public void setFormatterFactory(AbstractFormatterFactory tf); // Stabileste un tip de generator de formatori atunci cand nu a fost specificat nici formatorul nici generatorul prin constructor public void setValue(Object value); // asociaza o valoare campului public Object getValue(); //intoarce valoarea asociata

  16. Clasele de tip Format: public class SimpleDateFormat extends DateFormat; public SimpleDateFormat(String pattern); Exemple de caractere speciale folosite in construirea sablonului: d - zi in cadrul lunii, M - luna in cadrul anului, y - an calendaristic m - minute in ora, s - secunde in minut, H - ora in zi public class DecimalFormat extends NumberFormat; public DecimalFormat(String pattern); Exemple de caractere speciale: # - cifra, 0 - cifra inlusif 0 nesemnificativ, . - punct zecimal Clasele AbstractFormatter: public class MaskFormatter extends DefaultFormatter; // Construire formator dupa un sablon public MaskFormatter(String mask) throws ParseException; Exemplu de caractere speciale din sablon: # - cifre, U - orice litera, cu conversie la litere mari, L - orice litera, cu conversie la litere mici, A - orice cifra sau litera, ? - orice caracter, ' - character de evitare atunci cand sunt folosite caracterele speciale din sablon in interiorul mastii ca si caractere obisnuite

  17. public class DateFormatter extends InternationalFormatter; // Formator de tip data public DateFormatter(DateFormat format); // se specifica in sablon de data public class NumberFormatter extends InternationalFormatter; public NumberFormatter(NumberFormat format); // se specifica un sablon numeric Metode Formatter public Class<?> getValueClass(); // Intoarce clasa obiectului editat/formatat public void setValueClass(Class<?> valueClass); // Stabileste clasa obiectului editat/formatat Acceptarea/neacceptarea introducerii de caractere invalide pe parcursul editarii este stabilita prin metoda : public void setAllowsInvalid(boolean allowsInvalid);

  18. Generatori de formatori Generatorii sunt folositi atunci cand nu exista un formator asociat componentei. Sunt trei ipostaze in care este utilizat generatorul: - default - este utilizat atat in editare cat si in afisare daca lipsesc generatori pentru aceste situatii - editare - este utilizat in editare - afisare - este utilizat in afisare public class DefaultFormatterFactory extends JFormattedTextField.AbstractFormatterFactory implements Serializable; Constructori public DefaultFormatterFactory(JFormattedTextField.AbstractFormatter defaultFormat); // formatorul specificat este si pentru editare si pentru afisare public DefaultFormatterFactory(JFormattedTextField.AbstractFormatter defaultFormat, JFormattedTextField.AbstractFormatter displayFormat); // formatorul default este folosit pentru editare public DefaultFormatterFactory(JFormattedTextField.AbstractFormatter defaultFormat, JFormattedTextField.AbstractFormatter displayFormat, JFormattedTextField.AbstractFormatter editFormat); // cu toti formatorii

  19. JTable Constructorii clasei: public JTable(); // sunt asociate modelele default pentru tabel, coloana si selectie public JTable(TableModel dm); // are asociat model de tabel si modele implicite pentru coloana si selectie public JTable(TableModel dm, TableColumnModel cm); // are asociat si un model de coloana public JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm); // are asociate modele public JTable(int numRows, int numColumns); // idem primul constructor, dar cu numar de linii si coloane specificate public JTable(Vector rowData, Vector columnNames); // model bazat pe un vector de linii si un vector cu numele coloanelor public JTable(Object[][] rowData, Object[] columnNames); // sunt specificate massive pentru valori si numele de coloane

  20. JTable - principalele metode public int getRowCount(); public int getColumnCount(); public int getSelectedRow(); public int getSelectedColumn(); public String getColumnName(int column); public TableColumn getColumn(Object identifier); public Object getValueAt(int row, int column); public void setValueAt(Object aValue, int row, int column); public boolean isCellEditable(int row, int column); public void setAutoResizeMode(int mode); // specifica modul de comportare la redimensionare, cum este absorbita diferenta de latime de catre coloane AUTO_RESIZE_OFF - coloanele nu sunt redimensionate la redimensionarea tabelului AUTO_RESIZE_NEXT_COLUMN - se redimensioneaza coloana urmatoare AUTO_RESIZE_SUBSEQUENT_COLUMNS - se redimensioneaza uniform urmatoarele coloane AUTO_RESIZE_LAST_COLUMN - se redimensioneaza ultima AUTO_RESIZE_ALL_COLUMNS - se redimensioneaza uniform toate

  21. Interfaţa TableModel Metode abstracte: public Class getColumnClass(int col); // intoarce clasa asociata coloanei public int getColumnCount(); // numarul de coloane public String getColumnName(int col); // numele coloanei public int getRowCount(); // numarul de linii public Object getValueAt(int lin, int col); // valoarea din celula specificata public boolean isCellEditable(int lin,int col); // este sau nu celula editabila public void removeTableModelListener(TableModelListener l); // stergere ascultator public void addTableModelListener(TableModelListener l); // adaugare ascultator public void setValueAt(Object val,int lin,int col); // stabileste valoare pentru celula

  22. Clasa AbstractTableModel Metode abstracte: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int lin,int col);

  23. Implementarea implicita public class DefaultTableModel extends AbstractTableModel implements Serializable public DefaultTableModel() public DefaultTableModel(int rowCount, int columnCount) public DefaultTableModel(Vector columnNames, int rowCount) public DefaultTableModel(Object[] columnNames, int rowCount) public DefaultTableModel(Vector data, Vector columnNames) public DefaultTableModel(Object[][] data, Object[] columnNames)

  24. JTable - Creare editori/rendereri Rendererii si editorii sunt obiecte utilizate pentru afisarea si editarea continutului celulelor. • Vizualizarea şi editarea celulelor • Renderer – componentă grafică ce implementează TableCellRenderer sau extinde DefaultTableCellRenderer • Editor – componentă grafică ce implementează TableCellEditor sau extinde DefaultCellEditor • Stabilire renderer şi editor (TableColumn) • public void setCellRenderer(TableCellRenderer cellRenderer) • public void setCellEditor(TableCellEditor cellEditor) • Preluare TableColumn (JTable) • public TableColumn getColumn(Object identifier) • public String getColumnName(int column)

  25. Creare Renderer Prin implementarea interfetei: public interface TableCellRenderer; Metoda abstracta: Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column);// intoarce componenta desenata in celula; value este valoarea asociata celulei pentru a fi redata Prin extinderea clasei: public class DefaultTableCellRenderer extends JLabel implements TableCellRenderer, Serializable

  26. Creare editor Prin implementarea interfetei: public interface TableCellEditor extends CellEditor; Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column); // stabileste o valoare initiala, value, pentru editor; intoarce componenta folosita pentru editare Prin extinderea implementarii standard: public class DefaultCellEditor extends AbstractCellEditor implements TableCellEditor, TreeCellEditor; Constructori DefaultCellEditor: public DefaultCellEditor(JCheckBox checkBox); public DefaultCellEditor(JComboBox comboBox); public DefaultCellEditor(JTextField textField);

More Related