awt & swing

21
przygotował Michał Wdanie c AWT & SWING

Upload: ianthe

Post on 19-Mar-2016

59 views

Category:

Documents


0 download

DESCRIPTION

AWT & SWING. Abstract Window Toolkit. Główne cele AWT to stworzenie interfejsu który będzie wyglądał równie dobrze na wszystkich maszynach... Wygląda równie źle. SWING. Ostateczna biblioteka GUI dla Javy 2. Zalety: Prostota i dobry projekt - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: AWT & SWING

przygotował Michał Wdaniec

AWT & SWING

Page 2: AWT & SWING

przygotował Michał Wdaniec

Abstract Window Toolkit

Główne cele AWT to stworzenie interfejsu który będzie wyglądał równie dobrze na wszystkich maszynach...

Wygląda równie źle.

Page 3: AWT & SWING

przygotował Michał Wdaniec

SWINGOstateczna biblioteka GUI dla Javy 2.

Zalety: Prostota i dobry projekt Czytelność kodu, nawet

wygenerowanego przez narzędzia graficzne

Możliwość umieszczania wstawek HTML w komponentach.

Page 4: AWT & SWING

przygotował Michał Wdaniec

Przechwytywanie zdarzeń

Page 5: AWT & SWING

przygotował Michał Wdaniec

Action ListnersActionListenerKeyListnerMouseListner

Page 6: AWT & SWING

przygotował Michał Wdaniec

ActionListnerpublic class Test extends JApplet {private JButton b1 = new JButton("Wyczysc");private JTextArea t = new JTextArea(20,40);public void init() {b1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e){t.setText("");}});...

Page 7: AWT & SWING

przygotował Michał Wdaniec

MouseListnerpublic class Test extends JApplet {private JTextArea t = new JTextArea(20,40);

public class MyMouseListener implements MouseListener{public void mouseClicked(MouseEvent e){

t.setText("Nacisnąłeś mysz");}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}}

MyMouseListener l1 = new MyMouseListener();public void init() {

addMouseListener(l1);...

Page 8: AWT & SWING

przygotował Michał Wdaniec

KeyListenerclass Keys{static Keys keys;public static Keys Keys(){return keys;}/** * Is space pressed? */static boolean space;/** * Is up arrow pressed? */static boolean up;/** * Is down arrow pressed? */static boolean down;}

public class SkiJump extends Applet implements Runnable, KeyListener

public void keyReleased(KeyEvent e){ if (e.getKeyCode()==KeyEvent.VK_SPACE){ Keys.space=false;} if (e.getKeyCode()==KeyEvent.VK_UP){ Keys.up=false;}if (e.getKeyCode()==KeyEvent.VK_DOWN){ Keys.down=false;}return;}

//inne metody wymagające przysłonienia

public void init(){ addKeyListener(this);

...

Page 9: AWT & SWING

przygotował Michał Wdaniec

Inne ListneryNazwa Komponenty które generują zdarzenieActionJbutton,Jlist,JTextField,JMenuItem...Component Component i dziedzicząceContainer Container i dziedzicząceMouseMotion Component i dziedzicząceItem JCheckBox, JComboBox...Window Window i dziedzicząceText JTextComponent i dziedziczące

Page 10: AWT & SWING

przygotował Michał Wdaniec

Rozmieszczanie komponentów

Page 11: AWT & SWING

przygotował Michał Wdaniec

Najważniejsze Layout ManageryBorderLayoutFlowLayoutGridLayoutBoxLayout

Page 12: AWT & SWING

przygotował Michał Wdaniec

BorderLayoutpublic class Test extends JApplet {public void init() {JPanel panel1=new JPanel();JPanel panel2=new JPanel();panel1.setLayout(new

BoxLayout(panel1,BoxLayout.X_AXIS));for (int i=0;i<3;i++){panel1.add(new JButton("NORTH "+i));}panel2.setLayout(new

BoxLayout(panel2,BoxLayout.Y_AXIS));for (int i=0;i<2;i++){panel2.add(new JButton("WEST "+i));}Container cp= getContentPane();cp.setLayout(new BorderLayout());cp.add(BorderLayout.NORTH,panel1);cp.add(BorderLayout.WEST,panel2);cp.add(BorderLayout.EAST,new JButton("EAST"));cp.add(BorderLayout.CENTER,new JButton("CENTER"));cp.add(BorderLayout.SOUTH,new JButton("SOUTH"));}}

CENTER

SOUTH

EAST

NORTH 0 NORTH 1 NORTH 2

WEST 0

WEST 1

Page 13: AWT & SWING

przygotował Michał Wdaniec

FlowLayoutUstawia komponenty w poziomej linii,

jeżeli się nie mieszczą przesuwa je do następnej.

Bardzo nie polecany ze względu na przemieszczanie się elementów miedzy liniami w trakcie zmiany rozmiaru okna.

Page 14: AWT & SWING

przygotował Michał Wdaniec

GridLayoutTworzy rozciągniętą tabele komponentów.

Konstruktor: GridLayout(liczbaKolumn,LiczbaWierszy)

Bardzo przydatny i estetyczny.

Page 15: AWT & SWING

przygotował Michał Wdaniec

BoxLayoutPozwala na rozmieszczenie

elementów w pionie lub poziomie za pomącą „rozdzielaczy i kleju”.

Nazwa „klej” jest myląca i oznacza sprężynę.

Konstruktor: BoxLayout(pojemnik,BoxLayout.X_AXIS)

Page 16: AWT & SWING

przygotował Michał Wdaniec

Pojemnik BoxPojemnik z domyślnym menadżerem

BoxLayout.Konstruktor:

Box myBox = Box.createVerticalBox();Tworzenie kleju:

myBox.add(Box.createVerticalGlue());Tworzenie rozdzielaczy:

myBox.add(Box.createRigidArea(new Dimension(szerokosc,wysokosc)));

Page 17: AWT & SWING

przygotował Michał Wdaniec

Inne Przydatne/Ciekawe Rzeczy

Page 18: AWT & SWING

przygotował Michał Wdaniec

Wspaniałe wyskakujące okienka

Wywołuje je metoda JOptionPane.showTypDialog(null,”Napis na pasku”,”Napis w oknie”,...pozostałe opcje w zależności od typu...,JOptionPane.Typ_Obrazka_w_Okienku)

gdzie: Typ – typ okienka

Przykład:JOptionPane.showMessageDialog(null,„Błąd krytyczny",„Wystąpił błąd krytyczny 39h. Twój dysk twardy został sformatowany.",JOptionPane.ERROR_MESSAGE);

Page 19: AWT & SWING

przygotował Michał Wdaniec

Dźwięki, czyli wspaniała prostota Javy

Aby odtworzyć dźwięk w Javie wystarczy wywołać metodę klasy Applet:play(URL codec,nazwaPliku);

Jako pierwszy argument najczęściej wywołuje się metodę getCodecBase()

Przykład:play(getCodecBase(),”plik.wav”);

Takie wywołanie pozwala na odtwarzanie plików w formacie wave.

Page 20: AWT & SWING

przygotował Michał Wdaniec

Podwójne buforowaniepublic class SkiJump extends Applet implements Runnable{Graphics Gbuffer; //Obiekt rysujący na obrazek offscreen Image offscreen; //bufor, kopia ekranuDimension dim; //Rozmiar oknaThread loop; //Wątekboolean running = true;public void run(){

while (running) {repaint();//metoda uaktualniająca

try{loop.sleep(10);}//oddajemy sterowanie catch (InterruptedException e){System.out.println(e);}}}public void init(){

dim=getSize();offscreen=createImage(dim.width,dim.height);//Tworzymy bufforGbuffer=offscreen.getGraphics(); //Ustawiamy, Gbuffer na offscreenloop= new Thread(this);loop.start();}

public void paint(Graphics g){ //tutaj całe rysowanie, rysujemy na GBufferg.drawImage(offscreen,0,0,this);}//przerysowanie bufora na ekran

public void update(Graphics g){paint(g);}...

Page 21: AWT & SWING

przygotował Michał Wdaniec

KONIEC

(OKLASKI)