bild
Skolan för
elektroteknik
och datavetenskap

Programutvecklingsteknik, från föreläsning 3

Föreläsningsbilder: F3-bilder (ny kortare version 6 april, det vi inte hann med är flyttat till F4)

Programexempel från föreläsningen

Litet exempel där ett JFrame-objekt skapas utan subklass och några grundmetoder demonstreras. MiniJFrame.java.

Nu gör vi en subklass till JFrame som också får vara ActionListener. En knapp ändrar ramobjektets bakgrundsfärg. JFrame14.java.

Vi flyttar lyssnaregenskapen från fönsterklassen till en anonym inre klass. Detta exempel visdes inte på föreläsningen men vi pratade om den här principen för att göra lyssnare. JFrame14Anonymous.java.

Layoutmanagers

Container-komponenter har en Layoutmanager. En layoutmanager är en strategi för hur komponenter ska placeras inuti containern. En standard-layoutmanager finns alltid från början men man kan lägga in en egen om man vill. Här är några exempel på Layoutmanagers. De första tre är enkla, de två sista är lite krångligare att använda.
  • FlowLayout: Komponenter läggs radvis från vänster till höger i behållaren. Varje add(...) lägger en komponent till höger om senast inlagda. Om "raden" är slut används nästa rad. Komponenterna centreras på raden (om man inte anger annat). Behållarklassen JPanel har FlowLayout som standard.

  • GridLayout: Ett rutnät definieras. setLayout(new GridLayout(3,2)) gör att behållaren blir indelad med tre rader och två kolumner.
    add(...) fyller på radvis uppifrån och ned och från vänster till höger inom raden.

  • BorderLayout: Behållaren är indelad i en stor mittendel (CENTER) och "remsor" längs alla fyra sidorna. Sidorna kallas NORTH, EAST, SOUTH och WEST. Det passar t.ex. att lägga scrollbars på sidorna (alla) och meddelanden i NORTH eller SOUTH. För att välja denna skrivs
    setLayout(new BorderLayout()). Man placerar komponenter genom att ange destinationen:
    add(flowers ,BorderLayout.CENTER) lägger komponenten flowers i mitten av behållaren.
    Sidoremsor som inte används syns inte. Om man gör add(...) utan att ange destination kommer CENTER att användas. Behållaren JFrame har BorderLayout som standard.

  • GridBagLayout
  • BoxLayout
Här demonstreras de tre enklaste LayoutManagers: JFrameLayouts.java. Kommentera bort raden med FlowLayout och "kommentera på" GridLayout och se skillnaden. För BorderLayout måste add-anropen kompletteras med en parameter som säger var komponenten ska läggas, t.ex. add(b,BorderLayout.NORTH).

På föreläsningen kördes ett program som visade användning av JPanel och layoutmanagers BorderLayout och GridLayout. Vi tittade inte på Javakoden. Den finns här: PanelDemo2.java. Programfönstret såg ut så här:

CSC

Copyright © Sidansvarig: Ann Bengtsson <ann@nada.kth.se>
Uppdaterad 2014-04-06