AWT & SWING

Post on 19-Mar-2016

53 views 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 of AWT & SWING

przygotował Michał Wdaniec

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.

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.

przygotował Michał Wdaniec

Przechwytywanie zdarzeń

przygotował Michał Wdaniec

Action ListnersActionListenerKeyListnerMouseListner

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("");}});...

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);...

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);

...

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

przygotował Michał Wdaniec

Rozmieszczanie komponentów

przygotował Michał Wdaniec

Najważniejsze Layout ManageryBorderLayoutFlowLayoutGridLayoutBoxLayout

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

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.

przygotował Michał Wdaniec

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

Konstruktor: GridLayout(liczbaKolumn,LiczbaWierszy)

Bardzo przydatny i estetyczny.

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)

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)));

przygotował Michał Wdaniec

Inne Przydatne/Ciekawe Rzeczy

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);

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.

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);}...

przygotował Michał Wdaniec

KONIEC

(OKLASKI)