13_gui.pdf

(85 KB) Pobierz
648121788 UNPDF
XIII Tworzenie interfejsu graficznego
XIII.1 Główne okno programu - klasa JFrame
Aby utworzy¢ okno, w którym chcemy co± pokaza¢ musimy najpierw stworzy¢ obiekt klasy JFrame, np.:
JFrame okno;
Musimy tak»e załadowa¢ pakiet swing . Nale»y wi¦c w programie umie±ci¢ instrukcj¦:
import javax.swing.*;
W klasie JFrame mo»emy posługiwa¢ si¦ metodami:
metoda
opis
JFrame okno;
JPanel pan;
boolean war;
int w,h,x,y;
powoduje wyj±cie z programu po zamkni¦ciu okna
okno.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE)
okno.setVisible(boolean flag)
je±li flag=true to okno jest widoczne
okno.setTitle(”nazwa okna”)
informacja wy±wietlajaca si¦ na górnej belce okna
okno.setResizable(boolean flag)
je±li flag=true to okno mo»na skalowa¢ przy uzyciu myszki
okno.setSize(int w, int h)
ustala rozmiar okna (w-szeroko±¢, h-wysoko±¢ w pikselach)
okno.setLocation(int x, int y)
ustalane jest poło»enie lewego górnego rogu okna
okno.setContentPane(pan)
ładuje panel dla naszego okna(wyja±nienie czym jest panel
znajduje si¦ w kolejnym podrozdziale)
okno.pack()
po umieszczeniu składników w panelu i załadowaniu - panel
jest uruchamiany (wyja±nienie w kolejnym podrozdziale)
Napiszemy teraz program, który utworzy okno o ustalonych wymiarach geometrycznych, których nie mo»na
zmienia¢:
1 import javax.swing.*;
2 class okienko{
3 public static void main(String[] args){
4 JFrame okno=new JFrame();
5 //wlasnosci
6 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7 okno.setVisible(true);
8 //wlasnosci - rozmiar
9 okno.setResizable(false);
10 okno.setSize(400,200);
11 okno.setLocation(200,200);
12 //informacja wyswietlana w naglowku
13 okno.setTitle("glowne okno programu");
1
648121788.004.png 648121788.005.png
14 }
15 }
XIII.2 Zawarto±¢ okna - klasa JPanel
Program przedstawiony w poprzednim podrozdziale tworzy tylko okno. Okno to mo»na podzieli¢ na dwie cz¦±ci:
górn¡, w której widnieje jaka± informacja (kolor niebieski) oraz cz¦±¢ dolna w kolorze szarym. Ta dolna cz¦±¢
słu»y do umieszczania składników takich jak: przyciski, pola tekstowe, czy obszarów do rysowania. Aby móc za-
rz¡dza¢ doln¡ cz¦±ci¡ okna nale»y posłu»y¢ si¦ ”kontenerem” (content pane). Mo»na posłuzyc si¦ standardowym
kontenerem lub utworzy¢ go samemu. Zajmiemy si¦ t¡ drug¡ mo»liwo±ci¡.
Składania polecenia tworz¡cego potrzebny obiekt jest nast¦puj¡ca:
JPanel ob=new JPanel();
Metody dost¦pne dla obiektu klasy JPanel:
metoda
opis
int x,y;
JPanel pan=new JPanel();
Dimension roz=new Dimension(x,y);
Color kolor;
pan.setLayout(new Layout)
sposób rozmieszczania składników w panelu okre±la Lay-
out(np.: Layout=FlowLayout(),BorderLayout(), GridLay-
out(),BoxLayout()itp.)
pan.setPreferredSize(roz)
ustala rozmiar panelu
pan.setBackgroud(kolor)
tło
pan.add(składnik)
dodaje do panelu okre±lony składnik (np. przycisk lub pole
tekstowe)
Wykorzystuj¡c powy»sze informacje mo»emy rozszerzy¢ program z poprzedniego podrozdziału w celu pro-
stego sformatowania okna.
1 import java.awt.*;
2 import javax.swing.*;
3 class panel{
4 public static void main(String[] args){
5
6 JFrame okno=new JFrame();
7 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
8 okno.setVisible(true);
9 okno.setResizable(false);
10 okno.setSize(400,200);
11 okno.setLocation(200,200);
12 okno.setTitle("glowne okno programu");
13
14 Color c=new Color(250,0,0,255);
15 Dimension rozmiar=new Dimension(370,370);
16 //tworzymy panel w glownym oknie programu
17 JPanel p=new JPanel();
18 p.setLayout(new FlowLayout());
19 p.setPreferredSize(rozmiar);
20 p.setBackground(c);
2
648121788.006.png
21 okno.setContentPane(p);
22 okno.pack();
23 }
24 }
Uwagi:
W linii 14 definiujemy kolor tła panelu, a w linii 15 jego rozmiary.
W linii 21 ładujemy stworzony panel do obiektu okno.
W linii 22 metoda pack powoduje wy±wietlenie panelu w oknie.
XIII.3 Pola tekstowe jednolinijkowe- klasa JTextField
Najprostszym składnikiem jest pole tekstowe. W polu tekstowym mo»na wypisywa¢ jakie± informacje (Output)
lub te informacje pobiera¢ (Input). Pole tekstowe jest obiektem o okre±lonej nazwie. Tworz¡c je mo»emy od
razu okre±li¢ jego rozmiar (ilo±¢ znaków):
JTextField nazwa_pola=new JTextField(int ilosc_znakow);
mo»na tak»e pole zainicjowa¢ napisem (wówczas jego rozmiar jest ustalany na podstawie ilo±ci znaków w
napisie):
JTextFiled nazwa_pola=new JTextField("napis inicjuj¡cy");
Metody dostepne w klasie JTextField:
metoda
opis
String s="napis";
JTextField pole=new JTextField(s);
Font czcionka;
boolean war;
s=pole.getText()
pobiera tekst z pola tekstowego
pole.setFont(czcionka)
ustawia parametry czcionki u»ytej w polu tekstowym
pole.setText(s)
wstawia napis do pola tekstowego
pole.setEditable(war)
je±li war=false to do pola tekstowego nie mo»na wpisywa¢
tekstu z zewn¡trz (brak interaktywno±ci)
W poni»szym programie tworzone s¡ 2 pola tekstowe. Czcionka w jednym z nich jest standardowa a w drugim
parametry czcionki s¡ zmieniane.
1 import java.awt.*;
2 import javax.swing.*;
3 class tekst{
4 public static void main(String[] args){
5
6 JFrame okno=new JFrame();
3
648121788.007.png
7 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
8 okno.setVisible(true);
9
10 JPanel p=new JPanel();
11 p.setLayout(new FlowLayout());
12 p.setPreferredSize(new Dimension(200,200));
13 p.setBackground(Color.blue);
14
15 String s1="pole 1";
16 String s2="pole 2";
17 Font czcionka=new Font("Dialog", Font.ITALIC+Font.BOLD,20);
18 JTextField pole1=new JTextField(s1);
19 JTextField pole2=new JTextField(s2);
20 pole1.setFont(czcionka);
21 p.add(pole1);
22 p.add(pole2);
23 okno.setContentPane(p);
24 okno.pack();
25 }
26 }
Uwagi:
W linii 18 i 19 tworzymy 2 pola tekstowe i inicjujemy je.
W linii 20 ustalamy parametry czcionki wy±wietlanej w polu tekstowym 1. Wi¦cej o parametrach czcionki
w dodatku (Klasa Font).
W liniach 21 i 22 dodajemy utworzone pola tekstowe do panelu.
XIII.4 Pola tekstowe wielolinijkowe- klasa JTextArea
Mo»na utworzy¢ tak»e pola tekstowe, w których tekst wy±wietlany jest w wi¦cej ni» jednej linijce. Takie pola
tekstowe s¡ obiektami klasy JTextArea.
Definicje takich obiektów mog¡ wygl¡da¢ nast¦puj¡co:
int x,y; //x-ilosc kolumn, y - ilosc wierszy
String s="jakis napis";
JTextArea pole=new JTextArea(x,y);
lub
JTextArea pole=new JTextArea(s,x,y);
Metody dost¦pne w klasie JTextArea:
4
metoda
opis
String s;
int i,pos,rozmiar;
Font czcionka;
JTextArea pole;
pole.append(s)
dopisuje napis s do ko«ca pola tekstowego
i=pole.getLineCount()
podaje ilo±¢ wierszy w polu tekstowym
pole.setLineWrap(true)
zapobiega rozszerzaniu wierszy (łamie wiersze)
pole.setWrapStyleWord(true)
je±li wyrazy nie mieszcz¡ si¦ na ko«cu linii s¡ wówczas prze-
noszone do nowej linii
pole.insert(s,pos)
wstawia napis s na pozycji pos
pole.setFont(czcionka)
ustala parametry czcionki
pole.setTabSize(rozmiar)
ustawia rozmiar tabulacji
pole.setCaretPosition(rozmiar)
ustala pozycj¦ kursora
s=pole.getText()
pobiera tekst z całego pola tekstowego
i=pole.getLineStartOset(n line)
podaje numer znaku stoj¡cego na pocz¡tku linii n line
i=pole.getLineEndOset(n line)
podaje numer znaku stojacego na ko«cu linii n line
Poni»szy program tworzy pole tekstowe wielolinijkowe.
1 import java.awt.*;
2 import javax.swing.*;
3 class tekst_2{
4 public static void main(String[] args){
5
6 JFrame okno=new JFrame();
7 okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
8 okno.setVisible(true);
9
10 JPanel p=new JPanel();
11 p.setLayout(new FlowLayout());
12 p.setPreferredSize(new Dimension(200,200));
13 p.setBackground(Color.blue);
14
15 String s="pole tekstowe";
16 Font czcionka=new Font("Dialog", Font.ITALIC+Font.BOLD,10);
17 JTextArea pole=new JTextArea(s,10,10);
18 pole.setEditable(true);
19 pole.setFont(czcionka);
20
21 pole.setLineWrap(true);
22 pole.setWrapStyleWord(true);
23
24 pole.setTabSize(5);
5
648121788.001.png 648121788.002.png 648121788.003.png
Zgłoś jeśli naruszono regulamin