Bevezetés
A Java Swing platformfüggetlen GUI megjelenítést tesz lehetővé.
A Swing-es komponensek az MVC modell követik.
A következő fő elemek alkotják a swing jelentős részét:
- UI elemek: A felületen megjelenő elemek, komponensek.
- Elrendezések: A UI elemek elrendezését befolyásolják.
- Viselkedés: Eseménykezelés
![](../../images/swing_hierarchy.png)
Az ábrán néhány alap swing-es osztály közötti öröklődési kapcsolatot láthatjuk.
- Component: Absztrakt ősosztálya minden nem menü kontrollernek. Egy objektumot reprezentál, aminek van grafikus megjelenése.
- Container: Olyan Component ami másik komponenseket képes tárolni.
- JComponent: Minden Swing UI elemnek az ősosztálya.
Legfelső szintű tárolók
- JFrame
- JDialog
- JApplet
- Ők hárman alkothatják a tartalmazási hierarchia gyökerét.
- Minden elemet csak egy valaki tartalmazhat. Ha másik konténerhez is hozzáadom, akkor az elsőből kikerül.
- A fenti három elemnek van egy content pane eleme, ami tartalmazza a megjeleníteni kívánt elemeket.
- Menü sort csak a legfelső szintű tárolókhoz adhatunk. A menü a content pane-en kívülre kerül.
Szabály: Egy swing alkalmazásnak legyen legalább egy JFrame gyökerű tartalmazási hierarchiája. Pl.: Egy főablak és két dialógus ablak -> 1 JFrame és 2 JDialog Elem hozzáadása a content pane-hez:
frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);Az alapértelmezett content pane egy JComponent, ami BorderLayout-ot használ. A getContentPane egy Container objektumot ad vissza nem pedig JComponent-et. Így gyárhatunk saját container-t is. A content pane-t beállítani a következőképpen tudjuk:
//Create a panel and add components to it. JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setBorder(someBorder); contentPane.add(someComponent, BorderLayout.CENTER); contentPane.add(anotherComponent, BorderLayout.PAGE_END); topLevelContainer.setContentPane(contentPane);Note: Van egy root pane nevezetű tárolós is (layered pane, content pane, glass pane)
JComponent
Mindenkinek akinek a neve J-vel kezdődik az belőle származik, kivéve persze a legfelső szintű tárolókat. A JComponent a Container-ből származik. A JComponent a következőket szolgáltatja:- Tool tip (setToolTipText)
- Kirajzolás és szegélyezés (override paintComponent, setBorders)
- pluginelhető look and feel
- egyedi property-k
- elrendezés támogatás
- drag and drop támogatás
- double buffering
- gyorsbillentyű hozzárendelések
Szerializáció
Szerializáció: Egy objektum memóriából való kimentése/átalakítása bitszekvenciává (hogy pl a merevlemezre menthessük).Deszerializáció: Az előző ellentéte, azaz pl a merevlemezről beolvassuk a bitszekvenciát és abból egy objektumot gyártunk a memóriába.
Javaban az automatikus szerializációt a Serializable interface teszi lehetővé.