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
27932504.051.png 27932504.062.png 27932504.068.png 27932504.069.png 27932504.001.png 27932504.002.png 27932504.003.png 27932504.004.png 27932504.005.png 27932504.006.png 27932504.007.png 27932504.008.png 27932504.009.png 27932504.010.png 27932504.011.png 27932504.012.png 27932504.013.png 27932504.014.png 27932504.015.png 27932504.016.png 27932504.017.png 27932504.018.png 27932504.019.png 27932504.020.png 27932504.021.png 27932504.022.png 27932504.023.png 27932504.024.png 27932504.025.png 27932504.026.png 27932504.027.png 27932504.028.png 27932504.029.png 27932504.030.png 27932504.031.png 27932504.032.png 27932504.033.png 27932504.034.png
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
27932504.035.png 27932504.036.png 27932504.037.png 27932504.038.png 27932504.039.png 27932504.040.png 27932504.041.png 27932504.042.png 27932504.043.png
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
27932504.044.png 27932504.045.png 27932504.046.png 27932504.047.png 27932504.048.png 27932504.049.png 27932504.050.png
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
27932504.052.png 27932504.053.png 27932504.054.png 27932504.055.png 27932504.056.png 27932504.057.png
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
27932504.058.png 27932504.059.png 27932504.060.png 27932504.061.png 27932504.063.png 27932504.064.png 27932504.065.png 27932504.066.png 27932504.067.png
Zgłoś jeśli naruszono regulamin