1 / 21

AWT & SWING

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

ianthe
Download Presentation

AWT & SWING

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AWT & SWING przygotował Michał Wdaniec

  2. 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

  3. SWING Ostateczna 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

  4. Przechwytywanie zdarzeń przygotował Michał Wdaniec

  5. Action Listners • ActionListener • KeyListner • MouseListner przygotował Michał Wdaniec

  6. ActionListner publicclassTestextendsJApplet{ privateJButtonb1=newJButton("Wyczysc"); privateJTextAreat=newJTextArea(20,40); publicvoidinit(){ b1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ t.setText(""); }} ); ... przygotował Michał Wdaniec

  7. MouseListner publicclassTestextendsJApplet{ privateJTextAreat=newJTextArea(20,40); publicclassMyMouseListenerimplementsMouseListener{ publicvoidmouseClicked(MouseEvente){ t.setText("Nacisnąłeś mysz");} publicvoidmouseExited(MouseEvente){} publicvoidmousePressed(MouseEvente){} publicvoidmouseReleased(MouseEvente){} publicvoidmouseEntered(MouseEvente){} } MyMouseListenerl1=newMyMouseListener(); publicvoidinit(){ addMouseListener(l1); ... przygotował Michał Wdaniec

  8. publicclassSkiJumpextendsAppletimplementsRunnable,KeyListenerpublicclassSkiJumpextendsAppletimplementsRunnable,KeyListener publicvoidkeyReleased(KeyEvente){ 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 publicvoidinit(){ addKeyListener(this); ... classKeys { staticKeyskeys; publicstaticKeysKeys() { returnkeys; } /** *Isspacepressed? */ staticbooleanspace; /** *Isuparrowpressed? */ staticbooleanup; /** *Isdownarrowpressed? */ staticbooleandown; } KeyListener przygotował Michał Wdaniec

  9. Inne Listnery Nazwa Komponenty które generują zdarzenie Action Jbutton,Jlist,JTextField,JMenuItem... Component Component i dziedziczące Container Container i dziedziczące MouseMotion Component i dziedziczące Item JCheckBox, JComboBox... Window Window i dziedziczące Text JTextComponent i dziedziczące przygotował Michał Wdaniec

  10. Rozmieszczanie komponentów przygotował Michał Wdaniec

  11. Najważniejsze Layout Managery • BorderLayout • FlowLayout • GridLayout • BoxLayout przygotował Michał Wdaniec

  12. BorderLayout publicclassTestextendsJApplet{ publicvoidinit(){ JPanelpanel1=newJPanel(); JPanelpanel2=newJPanel(); panel1.setLayout(newBoxLayout(panel1,BoxLayout.X_AXIS)); for(inti=0;i<3;i++) {panel1.add(newJButton("NORTH "+i));} panel2.setLayout(newBoxLayout(panel2,BoxLayout.Y_AXIS)); for(inti=0;i<2;i++) {panel2.add(newJButton("WEST "+i));} Containercp=getContentPane(); cp.setLayout(newBorderLayout()); cp.add(BorderLayout.NORTH,panel1); cp.add(BorderLayout.WEST,panel2); cp.add(BorderLayout.EAST,newJButton("EAST")); cp.add(BorderLayout.CENTER,newJButton("CENTER")); cp.add(BorderLayout.SOUTH,newJButton("SOUTH"));} } NORTH 0 NORTH 1 NORTH 2 WEST 0 WEST 1 CENTER EAST SOUTH przygotował Michał Wdaniec

  13. FlowLayout Ustawia 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

  14. GridLayout Tworzy rozciągniętą tabele komponentów. Konstruktor: GridLayout(liczbaKolumn,LiczbaWierszy) Bardzo przydatny i estetyczny. przygotował Michał Wdaniec

  15. BoxLayout Pozwala 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

  16. Pojemnik Box Pojemnik 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

  17. Inne Przydatne/Ciekawe Rzeczy przygotował Michał Wdaniec

  18. 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

  19. 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

  20. Podwójne buforowanie publicclassSkiJumpextendsAppletimplementsRunnable{ Graphics Gbuffer; //Obiekt rysujący na obrazek offscreen Image offscreen; //bufor, kopia ekranu Dimension dim; //Rozmiar okna Thread loop; //Wątek boolean running = true; publicvoid run(){ while (running) {repaint();//metoda uaktualniająca try{loop.sleep(10);}//oddajemy sterowanie catch (InterruptedException e){System.out.println(e);}}} publicvoid init(){ dim=getSize(); offscreen=createImage(dim.width,dim.height);//Tworzymy buffor Gbuffer=offscreen.getGraphics(); //Ustawiamy, Gbuffer na offscreen loop= new Thread(this); loop.start();} publicvoid paint(Graphics g){ //tutaj całe rysowanie, rysujemy na GBuffer g.drawImage(offscreen,0,0,this);}//przerysowanie bufora na ekran publicvoid update(Graphics g){ paint(g);} ... przygotował Michał Wdaniec

  21. KONIEC (OKLASKI) przygotował Michał Wdaniec

More Related