w5_java.pdf
(
227 KB
)
Pobierz
w5_java
JAVA
Komponenty AWT
Komponenty AWT
•
AWT
(ang.
Abstract Windowing Toolkit
) - zbiór klas,
które zapewniają tworzenie prostych elementów
graficznego interfejsu uŜytkownika
GUI
( ang.
Graphical
User Interface
);
• większość tych klas znajduje się w pakiecie
java.awt
• wszystkie komponenty wywodzą się z klasy
Component
,
która definiuje metody m.in. ustalające właściwości
komponentów
• rodzaje komponentów:
komponenty-kontenery
(mogą
zawierać inne komponenty) i
komponenty terminalne
(nie mogą zawierać innych komponentów)
Beata Pańczyk - Java (Wykład 5)
2
Hierarchia klas AWT
Wspólne wła
ś
ciwo
ś
ci komponentów
• rozmiar (
Size
)
• połoŜenie (
Location
)
• rozmiar i połoŜenie (
Bounds
)
• pismo (
Font
)
• kolor tła (
Background
)
• kolor pierwszoplanowy (
Foreground
)
• rodzic (
Parent
)
• nazwa (
Name
)
• właściwości typu 0-1:
widzialność (
Visible
)
dostępność (
Enabled
)
Object
Component
Button
Canvas
Choice
Label
List
Checkbox
Scrollbar
Container
Panel
Window
ScrollPane
Dialog
Frame
T
extCompone
nt
FileDialog
TextArea
TextField
3
4
Ustalanie wła
ś
ciwo
ś
ci komponentów
Obiekt klasy Font
• właściwości mogą być pobierane za pomocą
metod
getNazwa()
isNazwa()
//dla wła
ś
ciwo
ś
ci 0-1 typu boolean
• ustalane są za pomocą metod
setNazwa(...)
• na przykład:
frame.getSize();
frame.setSize(200,200);
• pismo - obiekt klasy
Font
tworzony za pomocą
konstruktora
font(nazwa_pisma, styl, rozmiar);
nazwa_pisma
- łańcuch znakowy określający rodzaj pisma
(np
."Dialog")
styl
- jedna ze stałych statycznych:
Font
.
BOLD
,
Font.ITALIC
,
Font.PLAIN
rozmiar
- liczba całkowita określająca rozmiar w punktach
• przykład
Button b= new Button ("Tekst na przycisku");
b.setFont(new Font("Dialog",Font.PLAIN,14));
5
6
1
Obiekt klasy Color
Blokowanie i uwidacznianie komponentu
• komponenty gotowe do interakcji są odblokowane (ang.
enabled); zablokowanie komponentu uniemoŜliwia
interakcję z nim np.
b.setEnabled(false
);//zablokowanie, klikni
ę
cia
//przycisku nie b
ę
d
ą
przyjmowane
•
kolor
- obiekt klasy
Color
, kilka konstruktorów, stałe
statyczne predefiniowanych kolorów np.
Color
.
red
,
Color.blue
,
Color.white
• ustalanie koloru np. przycisku
b
za pomocą
predefiniowanych stałych:
b.setBackground(Color.blue);
b.setForeground(Color.white);
• ustalanie dowolnego koloru obiektu
ob
:
int r, g, b;
r=200; g=200; b=255;
ob.setBackground(new Color(r,g,b));
//odblokowanie:
if (!b.isEnabled()) b.setEnabled(true);
• wszystkie komponenty (oprócz wywodzących się z klasy
Window
) są domyślnie widoczne; w trakcie działania
programu moŜna je czynić niewidzialnymi np.:
Button b=new Button(...);
b.setVisible(false);
//b stanie si
ę
niewidoczny
if (!b.isVisible()) b.setVisible(true); //
uwidaczniamy
7
8
Okna - podstawowe poj
ę
cia
Rodzaje okien
•
okno wtórne
(ang. secondary window) - okno, które ma
właściciela - inne okno
•
okno pierwotne
(ang. owner) - właściciel innych okien
• wszystkie okna pochodzą od klasy
Window
Dialog
Frame
Rodzaje okien (
Window
):
•
Frame -
moŜe zawierać pasek tytułu, ikony sterujące,
ewentualnie pasek menu; główne okno aplikacji jest
zawsze obiektem klasy pochodnej od Frame
•
Dialog -
okno z ramką i tytułem, nie moŜe mieć paska
menu
9
10
Komponenty - przykład 1
import java.applet.*;
import java.awt.*;
public class etykieta extends Applet{
public void init(){
add(new Label("Etykieta (Label)"));
List l=new List(3,true);
l.add("Element listy (List) 1");l.add("Element listy (List) 2");
l.add("Element listy (List) 3");l.add("Element listy (List) 4");
TextField t=new TextField("Pole edycyjne (TextField)",20);
Button b=new Button("Przycisk (Button)");
Choice ch=new Choice();
ch.add("Wybor 1 (Choice)");
add(t); add(l); add(b); add(ch);
add(new Checkbox("Znacznik (Checkbox)",true));
}
Komponenty - przykład 1
}
11
12
2
Komponenty - przykład 2
import java.applet.*;
import java.awt.*;
public class fonty extends Applet{
public void init(){
Font f=new Font("Dialog",Font.BOLD,18);//ustalenie fontu
Label l=new Label("Zmiany kolorów i fontów
komponentów");
TextField t=new TextField("Pole tekstowe",10);
Button b=new Button("Przycisk");
l.setFont(f); l.setBackground(Color.red);
t.setFont(f); t.setForeground(Color.blue);
b.setFont(f);
b.setBackground(Color.black);
b.setForeground(Color.yellow);
add(l); add(t); add(b);
} }
Komponenty - przykład 2
Zmiana kolorów i fontów komponentów
13
14
Kontenery
Kontenery - rozkłady
• kontenery - komponenty, które mogą zawierać inne
komponenty (lub inne kontenery)
• dodawanie komponentów do kontenerów:
kontener.add(komponent);
• usunięcie komponentu z kontenera:
kontener.remove(komponent);
• najprostsze kontenery - klasy
Panel
- słuŜą do grupowania
elementów; panele są umieszczane w innych kontenerach -
typu
Window
(
Frame
,
Dialog
). Domyślnie
Panel
jest
widoczny, a
Window
nie. Dlatego uwidocznienie
Frame
i
Dialog
wymaga metody
setVisible(true):
frame.setVisible(true);
• z kaŜdym kontenerem skojarzony jest tzw.
zarz
ą
dca
rozkładu
( klasa
LayoutManager
), który określa
rozmiary i połoŜenie komponentów przy wykreślaniu
kontenera
• w klasie kaŜdego z komponentów znajdują się metody:
getPrefferedSize(), getMinimumSize(),
getMaximumSize(),
zwracające odpowiednie rozmiary
(obiekty typu
Dimension
z publicznymi polami
width
i
height
); rozmiary te są brane pod uwagę przy układaniu
komponentów
• najpopularniejsze rozkłady:
FlowLayout, BorderLayout, GridLayout
15
16
Rozkłady - charakterystyka
Rozkłady - przykład 1
import java.awt.*;
import java.applet.*;
public class rozkl extends Applet {
static int ile=5;
public void init() {
Color kolor=new Color(255,255,140);
Frame fr=new Frame("Przykłady rozkładów"); //utworzenie ramki fr
fr.setLayout(new GridLayout(3,1)); //ustalenie rozkładu ramki fr
Panel p=new Panel(); //utworzenie panela p
p.setLayout(new FlowLayout()); //ustalenie rozkładu panela p
p.setBackground(kolor); //ustalenie tła panela p
/* dodawanie komponentów - 5 przycisków do panela p:*/
for (int j=0;j<ile;j++) { Button b=new Button("Przycisk"+(j+1));
p.add(b);
•
FlowLayout
- domyślny dla
Panel
, komponenty ułoŜone
w wierszu, moŜna ustalić wyrównanie komponentów
(
FlowLayout.LEFT
,
FlowLayout.RIGHT
,
FlowLayout.CENTER
)
•
BorderLayout
- domyślny dla
Frame
i
Dialog
,
komponenty ułoŜone są "geograficznie": "
North
", "
East
",
"
South
", "
West
", "
Center
"; w celu dodania komponentu
uŜywa się metody:
kontener.add(komponent,"miejsce");
•
GridLayout
- tablica komponentów, rozmiary wszystkich
komponentów będą takie same, do ustalenia wymiarów
tablicy stosuje się konstruktor:
GridLayout(n,m) //tablica n x m komponentów
}
...
17
18
3
Rozkłady - przykład 1 c.d.
Rozkłady - przykład 1
...
Panel pl=new Panel(); //utworzenie kolejnego panela pl
pl.setLayout(new BorderLayout());// ustalenie rozkładu
Label lab=new Label ("Flow Layout");//utworzenie etykiety
lab.setFont(new Font("Dialog",Font.BOLD,16));
lab.setBackground(kolor);
pl.add(lab,"North"); //dodanie etykiety do panela na pozycji North
pl.add(p,"Center"); //dodanie panela p do panela pl na pozycji Center
fr.add(pl); //dodanie panela pl do ramki fr
fr.pack(); //dopasowanie wymiarów okna do komponentów
fr.setVisible(true); //uwidocznienie ramki
}
}
19
20
Rozkłady - przykład 2
Menu rozwijane (1)
• Menu rozwijane jest obiektem klasy
Menu
tworzone za
pomocą konstruktora
Menu(String etykieta)
• Element menu jest reprezentowany przez obiekt klasy
MenuItem
; element menu moŜemy utworzyć z podanym
napisem:
MenuItem(String)
lub z napisem i skrótem klawiaturowym:
MenuItem(String, MenuShortcut)
• MoŜemy pobierać i ustalać: tekst opcji menu (
getLabel()
i
setLabel(String)
), napis związany z opcją
(
setActionCommand(String),
getActionCommand()
), właściwość aktywności
(
getEnabled(), setEnabled(boolean)
), pismo
(
getFont()
i
setFont(Font)
) oraz skrót klawiaturowy
(
getShortcut()
i
setShortcut(MenuShortcut)
)
21
22
Menu rozwijane (2)
Procedura tworzenia menu
• Skrót klawiaturowy (Ctrl+znak) tworzymy za
pomocą
MenuShortcut(int znak)
np.
MenuItem mi=new
MenuItem("Koniec",
new MenuShortcut('K'));
• Szczególnym elementem menu jest
CheckBoxMenuItem
- opcja, której wybór
przełącza jej stan (graficznie obrazowany
Ö
);
• Utworzyć jedno lub więcej menu rozwijalnych
Menu m=new Menu("Nazwa menu");
• Tworzyć elementy i dodawać je do menu m
MenuItem mi=new MenuItem("Opcja");
m.add(mi);
• utworzyć np. kolejny poziom menu
Menu m1=new Menu("Nazwa m1");
• Dodać do niego kolejne elementy
MenuItem mii=new MenuItem("opcja");
m1.add(mii);
stan jest wła
ś
ciwo
ś
ci
ą
o nazwie State
(
getState
getState(),
(), setState
setState(boolean
boolean)
)
23
24
4
getState
(),
setState
boolean
Procedura tworzenia menu c.d.
Tworzenie menu - przykład 1
import java.awt.*;
public class MojeMenu1
{ public static void main(String[] args)
{Frame f=new Frame(); //utworzenie nowej ramki
MenuBar mb=new MenuBar(); //utworzenie paska menu
Menu mx=new Menu("Wybierz_kolor"); //utworzenie menu mx
Menu my=new Menu("Rysuj");
• Dodać ten poziom menu do menu wyŜszego poziomu
m.add(m1);
• Stworzyć pasek menu i dodać do niego wszystkie menu 1
poziomu
MenuBar pasek_menu=new MenuBar();
pasek_menu.add(m);
• Dla danego okna ramowego ustalić pasek menu
Frame f=new Frame();
f.setMenuBar(pasek_menu);
//utworzenie menu my
Menu mz=new Menu("Koniec");
//utworzenie menu mz
mb.add(mx);
//dodanie mx do paska menu
mb.add(my);
//dodanie my do paska menu
mb.add(mz);
//dodanie mz do paska menu
f.setMenuBar(mb);
//ustalenie paska menu dla ramki f
f.setSize(300,100);
//ustalenie wymiarów ramki
f.setVisible(true);
} }
25
26
Tworzenie menu - przykład 1
Rozbudowane menu - przykład 2
…
Font font=new Font("Dialog",Font.BOLD,20);
Menu mx=new Menu("Wybierz_kolor");
Menu my=new Menu("Rysuj");
Menu mz=new Menu("Koniec");
mx.setFont(font); my.setFont(font); mz.setFont(font);
MenuItem mx1=new MenuItem("Czerwony");
MenuItem mx2=new MenuItem("Zielony");
MenuItem mx3=new MenuItem("Niebieski");
mx.add(mx1);mx.add(mx2);mx.add(mx3);
MenuItem my1=new MenuItem("Ksztalty",new MenuShortcut('K'));
MenuItem my2=new MenuItem("Wykresy",new MenuShortcut('W'));
my.add(my1);my.add(my2);
mb.add(mx);mb.add(my);mb.add(mz);
…
27
28
Rozbudowane menu - przykład 2
Rozbudowane menu - przykład 3
…
Menu mx=new Menu("Wybierz_kolor");
Menu my=new Menu("Rysuj");
Menu mz=new Menu("Koniec");
…
Menu my1=new Menu("Ksztalty");
MenuItem my11=new MenuItem("Prostok
ą
t");
MenuItem my12=new MenuItem("Elipsa");
my1.add(my11); my1.add(my12);
Menu my2=new Menu("Wykresy");
MenuItem my21=new MenuItem("Słupkowy");
MenuItem my22=new MenuItem("Kołowy");
my2.add(my21); my2.add(my22);
my.add(my1);my.add(my2);
…
29
30
5
Plik z chomika:
lazarusp22
Inne pliki z tego folderu:
w6_java.pdf
(317 KB)
w11_java.pdf
(177 KB)
w7_java.pdf
(477 KB)
w1_java.pdf
(293 KB)
w8_java.pdf
(281 KB)
Inne foldery tego chomika:
Java A. Zoła
Wykład dla studentów Informatyki Stosowanej i Fizyki
Zgłoś jeśli
naruszono regulamin