Programowanie obiektowe

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Programowanie obiektowe
Programowanie obiektowe
Rysowanie GUI Określanie wyglądu komponentów
Implementacja ekstensji klasy
Grafika komputerowa Wykład 2 Wykorzystanie podstawowych usług bibliotecznych (API) w operacjach graficznych.
Java applet (c.d.) Nguyen Hung Son Uniwersytet Warszawski.
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
MS Access 2003 Kwerendy Paweł Górczyński.
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Projektowanie interfejsu Pakiet AWT, komponenty i kontenery, klasa Component, metody klasy Component, klasa Label, komponenty tekstowe, klasa TextField,
Programowanie sieciowe w Javie
Tworzenie prezentacji w programie PowerPoint
Systemy mobilne i komunikacja bezprzewodowa Ćwiczenie 1 Jarosław Kurek WZIM SGGW 1.
Plan Prezentacji Wczytywanie grafiki Wyświetlanie obrazów
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Język Java Wielowątkowość.
przygotował Michał Wdaniec
C# Windows Forms Zastosowania Informatyki Wykład 3
C# Windows Forms Zastosowania Informatyki Wykład 4, 5
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Czym jest JavaFX? Rich Internet Application
Tadeusz Ziębakowski Zachodniopomorski Uniwersytet Technologiczny.
Podstawy programowania II
ANNA BANIEWSKA SYLWIA FILUŚ
Tworzenie aplikacji mobilnych
Programowanie obiektowe
Konfiguracja systemu Windows
Tworzenie aplikacji mobilnych
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Seminarium problemowe
Wzorce slajdów, animacje, różne orientacje slajdów
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Java 3 MPDI Programowanie obiektowe W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów.
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Ms Access Formularze i raporty Marzena Nowakowska KIS, WZiMK, PŚk
OCPJP Inner classes.
Zaawansowane komponenty graficzne Swing
Projektowanie stron WWW
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Biblioteki graficzne: Swing, AWT, SWT
Tworzenie wykresów część I
Mirosław Ochodek Szkolenie finansowane ze ś rodków Europejskiego Funduszu Spo ł ecznego (75%) i bud ż etu pa ń stwa (25%)
Mirosław Ochodek Szkolenie finansowane ze ś rodków Europejskiego Funduszu Spo ł ecznego (75%) i bud ż etu pa ń stwa (25%)
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 4 Dr Aneta Polewko-Klim
Przypomnienie wiadomości – kilka zadań
T. 18. E Proces DGA - Działania (operatorka).
Przeglądarka stron WWW
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Java-wykład Grafika.
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe – zastosowanie języka Java SE
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
PGO GUI - Swing Michail Mokkas.
Zapis prezentacji:

Programowanie obiektowe 3MPDI Programowanie obiektowe Java W7

Uwagi do pól statycznych Ponieważ pole statyczne nie wymaga tworzenia obiektu, aby był do niego dostęp, można wykorzystać takie pole do zliczania wygenerowanych obiektów danej klasy. Konstruktor klasy może zawierać operację zwiększania wartości w polu statycznym class Punkt{ private static int liczba_ob; Punkt (int x, int y){ … liczba_ob++; } static int liczba_p (){ return liczba_ob;

wówczas w metodzie main: System.out.println(Punkt.liczba_p()); Punkt p=new Punkt(1,2); Punkt q=new Punkt(3,2); wydrukuje: 2 można też wykorzystać pole statyczne w kontekście dowolnego obiektu np. p. liczba_p() lub q. liczba_p()

AWT (The Abstract Windows Toolkit) jedną ze standardowych bibliotek graficznych środowiska Java. Jest niezależna od stosowanego systemu operacyjnego. W chwili obecnej, obok innych bibliotek graficznych: Swing oraz Java2D jest ona częścią frameworka Java Foundation Classes Swing - biblioteka graficzna używana w języku programowania Java, upubliczniona w lipcu roku 1997 [1]. Jest nowszą, ulepszoną wersją biblioteki AWT.

import javax.swing.*; public class HelloWorld { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new JFrame("Hello, World!"); f.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); f.add(new JLabel("Hello, World!")); f.pack(); f.setVisible(true); } }); }

Tworzenie graficznych interfejsów użytkownika Swing

import java.awt.event.*; Pakiety Komponenty import java.awt.*; import javax.swing.*; Obsługa zdarzeń import java.awt.event.*;

Komponenty ustawienie rozmiarów ustawienie koloru tła ustawienie czcionki używanej do wyświetlania tekstu ...

Kontenery Kontener to pojemnik na komponenty Kontener jest też komponentem – to znaczy że może być wkładany do innego kontenera Metody kontenerów: dodawanie i usuwanie elementów kontenera, rozmieszczanie komponentów

Okna i ramki JWindow posiada panel na zawartość JFrame posiada dodatkowo ramkę, pasek tytułu, przyciski zamknięcia, minimalizacji, panel na menu

Tworzenie własnego okna public class Okno extends JFrame{ JButton b = new JButton("Przycisk"); Container cp; public Okno(){ super("Tytuł na belce okna"); cp = getContentPane(); cp.add(b); setSize(500,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args){ new Okno();

Tworzenie własnego okna public class Okno extends JFrame{ JButton b = new JButton("Przycisk"); JPanel panel = new JPanel(); public Okno(){ super("Tytuł na belce okna"); panel.add(b); setContentPane(panel); setSize(500,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args){ new Okno();

Tworzenie własnego okna public class MojPanel extends JPanel{ JButton b = new JButton("Przycisk"); public MojPanel(){ add(b); } public static void main(String[] args){ JFrame f = new JFrame("Tytuł"); f.setContentPane(new MojPanel()); f.setSize(500,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true);

Zaprogramowanie przycisku „Zamknij” setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DISPOSE_ON_CLOSE – zamyka ramkę, usuwa obiekt reprezentujący ramkę, ale pozostawia pracującą aplikację DO_NOTHING_ON_CLOSE – pozostawia ramkę otwartą i kontynuuje pracę aplikacji HIDE_ON_CLOSE – zamyka ramkę pozostawiając pracującą aplikację

Lokalizacja okna na ekranie setBounds(int x, int y, int szerokość, int wysokość)

Przyciski JButton przycisk = new JButton("Przycisk"); ImageIcon ico = new ImageIcon("smile.gif"); JButton przycisk = new JButton("Przycisk", ico);

Etykiety JLabel label = JLabel("Etykieta"); ImageIcon ico = new ImageIcon("smile.gif"); JLabel label = JLabel("Etykieta", ico, SwingConstants.RIGHT);

Pola tekstowe JTextField txt = new JTextField("tekst", 10); txt.setText("napis"); String s = txt.getText(); JPasswordField p = new JPasswordField(10); char[] haslo = p.getPassword(); .... Arrays.fill(haslo,' ');

Obszary tekstowe JTextArea t = new JTextArea(5, 10); t.setLineWrap(true); t.setWrapStyleWord(true); JScrollPane s = new JScrollPane(t);

Pola opcji i pola wyboru JCheckBox c = new JCheckBox("opcja 1"); boolean zaznaczony = c.isSelected(); JRadioButton r = new JRadioButton("opcja 1");

Grupowanie przycisków opcji Obiekt klasy ButtonGroup jest logiczny (nie graficzny) – zapewnia, że tylko jeden przycisk z grupy może być wciśnięty ButtonGroup grupa = new ButtonGroup(); grupa.add(przycisk1); grupa.add(przycisk2); grupa.add(przycisk3);

Listy JComboBox c = new JComboBox(); c.addItem("Biały"); c.addItem("Niebieski"); c.setEditable(true); String s = (String) c.getSelectedItem(); JList l = new JList(); String s = (String) l.getSelectedValue();

Okna dialogowe MessageDialog InputDialog ConfirmDialog

Okna dialogowe JOptionPane.showMessageDialog( null,"Jakaś wiadomość"); String odp = JOptionPane.showInputDialog( "Podaj wartość"); int odp = JOptionPane.showConfirmDialog( null,"Czy...?"); switch(odp){ case JOptionPane.YES_OPTION : ....; case JOptionPane.NO_OPTION : ....; }

Wybieranie pliku i koloru JFileChooser f = new JFileChooser(); int wynik = f.showOpenDialog(this); File ff = f.getSelectedFile(); Color k = JColorChooser.showDialog( this,"Wybierz", Color.black);

Suwaki i wskaźniki zaawansowania JSlider s = new JSlider(0,100); int w = s.getValue(); JProgressBar pb = new JProgressBar(0,100); pb.setStringPainted( true); pb.setValue(30); int w = pb.getValue();

Menu Plik Edycja Otwórz Czcionka Zapisz JMenuItem JMenu JMenuBar JMenuBar mb = new JMenuBar(); JMenu p = new JMenu(„Plik”); JMenu e = new JMenu(„Edycja”); JMenuItem o = new JMenuItem(„Otwórz”); JMenuItem z = new JMenuItem(„Zapisz”); JMenuItem cz = new JMenuItem(„Czcionka”); mb.add(p); mb.add(e); p.add(o); p.add(z); e.add(cz); okno.setJMenuBar(mb); JMenuItem JMenu JMenuBar

Panel z kartami JTabbedPane p = new JTabbedPane(); p.add(„Dane”,panel1); p.add(„Właściwości”, panel2);

Rozmieszczanie komponentów Każdy kontener posiada obiekt zajmujący się rozmieszczaniem komponentów – menedżer rozkładu (layout) Zmiana menedżera rozkładu – metoda setLayout Domyślny menedżer dla okna (JFrame)  BorderLayout Domyślny menedżer dla paneli (JPanel)  FlowLayout

BorderLayout c – kontener c.setLayout(new BorderLayout()); c.add(k1,”North”); c.add(k2,”South”); c.add(k3,”Center”); c.add(k4,”West”); c.add(k5,”East”);

FlowLayout c – kontener c.setLayout( new FlowLayout( FlowLayout.CENTER )); c.add(k1); c.add(k2); c.add(k3); c.add(k4); c.add(k5);

GridLayout c – kontener c.setLayout(new GridLayout(2,2)); c.add(k1); c.add(k2); c.add(k3); c.add(k4);

Panel z kartami JTabbedPane p = new JTabbedPane(); p.add(„Dane”,panel1); p.add(„Właściwości”, panel2);

Składanie layoutów p.add(b1); p.add(b2); cp.setLayout(new GridLayout(2,2)); cp.add(p); cp.add(b3); cp.add(b4); cp.add(b5); JButton b1 = new JButton("k1"); JButton b2 = new JButton("k2"); JButton b3 = new JButton("k3"); JButton b4 = new JButton("k4"); JButton b5 = new JButton("k5"); JPanel p = new JPanel();

SWING Na początek klasa Pracownik public class Pracownik { String nazwisko; double pensja; //konstruktor Pracownik(String n, double b) { nazwisko = n; pensja = b; } //metody public void pokaz() { System.out.println(nazwisko+ ": $" + pensja); public String pnazw() {return nazwisko;}

teraz klasa MojaFrame import java.awt.*; import javax.swing.*; import java.awt.event.*; class MojaFrame extends JFrame { //pola //dwa panele JPanel p1=new JPanel(); JPanel p2=new JPanel(); //dwa przyciski JButton b1= new JButton("Dodaj"); JButton b2= new JButton("Czyść"); //trzy pola tekstowe JTextField t1= new JTextField(""); JTextField t2= new JTextField(""); JTextField t3= new JTextField(""); Wstaw d1=new Wstaw(); Czysc d2=new Czysc(); Pracownik biezacy[] = new Pracownik[3];

//konstruktor klasy public MojaFrame(){ //tworzymy 3 pracowników biezacy[0] = new Pracownik("T.Bialy", 123.12); biezacy[1] = new Pracownik("J.Schmidt", 56.12); biezacy[2] = new Pracownik("A.Moraw", 34.75); //utworzenie nowej ramki t1.setColumns(10);//ile znaków setLayout(new BorderLayout(2,1)); p2.setSize(new Dimension (50,20)); p2.setBackground(Color.RED); p2.setLayout(new GridLayout(3,1)); //dodanie "słuchaczy" do panelu 2 i przycisku b1.addActionListener(d1); b2.addActionListener(d2); //przyciski do panelu 1 – domyślnie FlowLayout - strumieniowy p1.add(b1); p1.add(b2); //pola tekstowe do panelu 2 p2.add(t1); p2.add(t2); p2.add(t3);

//wrzucenie kontrolek do kontenera add(p2,BorderLayout.NORTH); add(p1,BorderLayout.SOUTH); //spakowanie ramki pack(); setTitle("Pracownicy"); //polożenie i rozmiar ramki setBounds(400, 400, 300, 350); setVisible(true); }

teraz dwie wewnętrzne klasy implementujące ActionListener – dla obsługi przycisków private class Wstaw implements ActionListener{ //konstruktor Wstaw(){} //konieczna metoda actionPerformed !!! public void actionPerformed (ActionEvent zdarzenie){ t1.setText(biezacy[0].pnazw()); t2.setText(biezacy[1].pnazw()); t3.setText(biezacy[2].pnazw()); } public class Czysc implements ActionListener{ Czysc(){} t1.setText(""); t2.setText(""); t3.setText("");

//metoda main public static void main (String[] args) { MojaFrame ramka= new MojaFrame();//aktywizacja konstruktora //ustawienie zamknięcia ramki ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }//koniec klasy MojaFrame

BorderLayout FlowLayout – od lewej do prawej