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:
|