Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

36
Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

description

Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką. Swing komponentų privalumai lyginant su AWT (1). Parašyti išimtinai Java kodu ir nepriklauso nuo platformos Žymės ir mygtukai be įprasto teksto gali turėti paveikslėlius Daugeliui komponentų galima uždėti ar pakeisti rėmelius. - PowerPoint PPT Presentation

Transcript of Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Page 1: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Page 2: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing komponentų privalumai lyginant su AWT (1) Parašyti išimtinai Java kodu ir

nepriklauso nuo platformos Žymės ir mygtukai be įprasto

teksto gali turėti paveikslėlius Daugeliui komponentų galima

uždėti ar pakeisti rėmelius

http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Page 3: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing komponentų privalumai lyginant su AWT (2) Komponentai nebūtinai yra

stačiakampės formos (pvz., apvalus mygtukas)

Lengvai keičiamas komponentų elgesys ar išvaizda, panaudojant esamus metodus ar juos perdengus

http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Page 4: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Galimos problemos Reikia vengti mišraus AWT ir Swing

komponentų vartojimo Matomų komponentų modifikavimas

atliekamas tik iš įvykius apdorojančios gijos (event-dispatching thread)

Swing komponentus reikėtų dėti tik į Swing viršutinio lygio konteinerius (JFrame, JApplet)

http://java.sun.com/products/jfc/tsc/articles/mixing/index.html

Page 5: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Pagrindiniai Swing paketai import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Page 6: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing’o komponentai ir jų turinio hierarchija (1) Viršutinio lygio konteineriai

(JFrame, JApplet, JDialog) Tarpiniai konteineriai (JPanel,

JScrollPane, JTabbedPane) Atominiai (atomic) komponentai,

priimantys informaciją ar išvedantys ją vartotojui

http://java.sun.com/docs/books/tutorial/uiswing/components/index.html http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

Page 7: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing’o komponentai ir jų turinio hierarchija (2)

http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Page 8: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.1import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class Demo { public static void main(String args[]) { JFrame frame = new JFrame("Demo"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } });// tęsinys kitoje skaidrėje

Page 9: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.1 JLabel label = new JLabel("Demonstracine programa");

JButton button = new JButton("Mygtukas"); button.setBackground(Color.RED); frame.getContentPane().add(label,

BorderLayout.CENTER); frame.getContentPane().add(button,

BorderLayout.PAGE_END); frame.setBounds(10, 10, 200, 100); frame.setVisible(true); }}

Page 10: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.1

Page 11: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Vartotojo sąsajos komponentų išdėstymo būdai Išdėstymo būdas gali būti

nustatytas bet kuriam viršutinio lygio konteineriui (pvz., JFrame, JDialog, JApplet, JPanel ir pan.)

Išdėstymui nustatyti naudojamas Container klasės metodas: public void setLayout(LayoutManager isdestymoBudas)

http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

Page 12: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (1) BorderLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html

Page 13: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (2) FlowLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html

Page 14: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (3) BoxLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html

Page 15: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (4) GridLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html

Page 16: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (5) GridBagLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

Page 17: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Klasės skirtos nustatyti GUI komponentų išdėstymą (6) SpringLayout

http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html

Page 18: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Įvykių apdorojimas (1) Įvykis – tai veiksmas, kurį atlieka

vartotojas, dirbdamas su grafine vartotojo sąsaja

Kiekvieną įvykį aprašo jam skirtas objektas (pvz., ActionEvent, MouseEvent)

Bet kuris Swing komponentas (šaltinis) gali fiksuoti su juo susijusius įvykius

http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

Page 19: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Įvykių apdorojimas (2) Bet kuris Swing komponentas gali

fiksuoti kelis skirtingo tipo įvykius Bet kuris “įvykio klausytojas”

(event listener) gali būti užregistruotas keliems šaltiniams

http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

Page 20: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Kai kurių įvykių pavyzdžiai ActionEvent – paspaudžiamas

mygtukas, Enter klavišas ar pasirenkamas meniu punktas

WindowEvent – vartotojas uždaro programos langą

MouseEvent – vartotojas paspaudžia kurį nors pelės klavišą ant komponento

MouseMotionEvent – vartotojas užveda kursorių virš komponento

http://java.sun.com/docs/books/tutorial/uiswing/events/eventsandcomponents.html http://java.sun.com/docs/books/tutorial/uiswing/events/handling.html

Page 21: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Įvykio apdorojimo realizavimas (1)Įvykį apdorojanti klasė privalo:

a) arba pati implementuoti “įvykio klausytojo” interfeisą ir realizuoti visus jo metodus:

public class MyListener implements ActionListener {public void actionPerformed(ActionEvent evt) { // atitinkami veiksmai}}

http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Page 22: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Įvykio apdorojimo realizavimas (2)

b) arba paveldėti “klausytojo” interfeisą realizuojančią klasę ir perdengti reikalingus metodus:

class MyMouseListener extends MouseAdapter {public void mouseClicked(MouseEvent evt) { // atitinkami veiksmai}}

http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Page 23: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Įvykio apdorojimo realizavimas (3)Naudojant addXXXListener() metodą,

reikiamiems komponentams, užregistruojama įvykį apdorojanti klasė :

komponentas.addActionListener(new MyListener());// variantui a)komponentas.addActionListener(this);// variantui a), kai šaltinis ir apdorojimas vienoje klasėje komponentas.addMouseListener(new MyMouseListener());// variantui b)

http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Page 24: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Anoniminės “įvykio klausytojo” klasės panaudojimas

komponentas.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent evt) {

// atitinkami veiksmai}

});

http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Page 25: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Pastabos dėl įvykių apdorojimo Visi xxxListener interfeisai, turintys daugiau

negu vieną metodą, turi specialias juos realizuojančias adapterių klases

Įvykių klasės xxxEvent objektas turi metodus papildomai informacijai apie įvykį gauti

Visos xxxEvent klasės paveldi ObjectEvent klasę, kurios metodas getSource() gražina įvykio šaltinį

http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Page 26: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.2import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class Demo { public static void main(String args[]) { JFrame frame = new JFrame("Demo"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } });// tęsinys kitoje skaidrėje

Page 27: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.2 JLabel label = new JLabel("Demonstracine programa");

JButton button = new JButton("Mygtukas"); button.setBackground(Color.RED);

button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { JButton b = (JButton) evt.getSource(); if (b.getBackground() == Color.RED) { b.setBackground(Color.GREEN); } else { b.setBackground(Color.RED); } } });

Page 28: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.2frame.getContentPane().add(label,

BorderLayout.CENTER);

frame.getContentPane().add(button, BorderLayout.PAGE_END);

frame.setBounds(10, 10, 200, 100);

frame.setVisible(true);

}

}

Page 29: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Paišymas Kiekvienas Swing’o komponentas turi

metodą paint(Graphics g), skirtą grafiniam to komponento atvaizdavimui

Norint savaip atvaizduoti komponentą, reikia perdengti jo metodą paint(Graphics g) arba paintComponent(Graphics g)

Komponento perpaišymas atliekamas metodo repaint() pagalba

http://java.sun.com/docs/books/tutorial/uiswing/14painting/index.html

Page 30: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Graphics ir Graphics2D objektai Tai objektai, turintys metodus,

skirtus paišymui atlikti Saugo einamąjį grafinį kontekstą

(pvz., paišymo spalva, šriftas, ploto dydis ir t.t.)

http://java.sun.com/docs/books/tutorial/2d/index.html

Page 31: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Graphics ir Graphics2D objektų galimybės

Įvairias geometrines figūras Tekstą Paveikslėlius

Šių objektų pagalba galima atvaizduoti:

http://java.sun.com/docs/books/tutorial/2d/index.html

Page 32: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing komponentų koordinačių sistema

http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts2.html

Page 33: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.3public class MyPanel extends JPanel { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g;

g2.setBackground(Color.YELLOW);g2.setFont(new Font("Arial", 0, 13));g2.clearRect(0, 0,

getWidth(),getHeight());g2.setColor(Color.black);g2.drawString("Eilute", 10, 10);

}}

Page 34: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Programos pavyzdys nr.3

Page 35: Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Nuorodos (1) http://java.sun.com/ - pagrindinis Java kūrėjos Sun

Microsystems puslapis. Čia rasite visko... http://java.sun.com/docs/books/tutorial/uiswing/index.html -

the Java Swing Tutorial. http://java.sun.com/apis.html - the Java API Documentation. http://java.sun.com/docs/books/tutorial/uiswing/components/c

omponents.html - Swing komponentų katalogas

http://java.sun.com/docs/books/tutorial/uiswing/events/index.html - įvadas į įvykių apdorojimą.

http://java.sun.com/docs/books/tutorial/uiswing/events/handling.html - populiariausių įvykius apdorojančių interfeisų realizacijos