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

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
Tulajdonságaik:
  • Ő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.
Minden swing-es programban kell lennie legalább egy legfelsőbb szintű tárolónak, amely így a tartalmazási hierarchia gyökere lesz.
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é.