Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Java 3 MPDI Programowanie obiektowe W8. Ponieważ pole statyczne nie wymaga tworzenia obiektu dla dostępu do pola, można wykorzystać takie pole do zliczania.

Podobne prezentacje


Prezentacja na temat: "Java 3 MPDI Programowanie obiektowe W8. Ponieważ pole statyczne nie wymaga tworzenia obiektu dla dostępu do pola, można wykorzystać takie pole do zliczania."— Zapis prezentacji:

1 Java 3 MPDI Programowanie obiektowe W8

2 Ponieważ pole statyczne nie wymaga tworzenia obiektu dla dostępu do pola, 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 Uwagi do pól statycznych class Punkt{ private static int liczba_ob; Punkt (int x, int y){ … liczba_ob++; } static int liczba_p (){ return liczba_ob; }

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

4 Tworzenie graficznych interfejsów użytkownika pakiet Swing

5 AWT (The Abstract Windows Toolkit) jedna ze standardowych bibliotek graficznych środowiska Java. - biblioteka graficzna używana w języku Java, upubliczniona w lipcu roku 1997 [1]. Nowsza, ulepszona wersja biblioteki AWT. 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

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

7 Komponenty JComponent JButton JLabel JTextField JTextArea JComboBox

8 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 Container JWindow JFrame JPanel

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

10 Główne zasady tworzenia aplikacji graficznej Utworzenie klasy rozszerzającej JFrame lub JWindow (jeśli klasa własna, to w konstruktorze trzeba utworzyć obiekt klasy JFrame) Utworzenie obiektów komponentów – pól klasy Utworzenie pola – kontenera, można też utworzyć jeden lub kilka paneli (Panel) Utworzenie metod "słuchaczy" zdarzeń (lub klas słuchaczy) z metodą actionPerformed Utworzenie konstruktora naszej klasy, a w nim: inicjacja zawartości kontenera - getContentPane lub setContentpane(panel) ustalenie menedżera rozkładu dodanie komponentów do kontenera związanie słuchaczy z komponentami (addActionListener) spakowanie ramki i uwidocznienie Utworzenie metody main – zainicjować instancję obiektu naszej klasy

11 Tworzenie własnego okna import java.awt.*; import javax.swing.*; public class Okno1 extends JFrame{ JButton b = new JButton("Przycisk"); Container cp; public Okno1(){ 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 Okno1(); }

12 import java.awt.*; import javax.swing.*; public class Okno2{ JFrame f =new JFrame("Tytuł na belce okna"); JButton b = new JButton("Przycisk"); Container cp; public Okno2(){ cp = f.getContentPane(); cp.add(b); f.setSize(500,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } public static void main(String[] args){ new Okno2(); }

13 import java.awt.*; import javax.swing.*; public class Okno3 extends JFrame{ JButton b = new JButton("Przycisk"); JPanel panel = new JPanel(); public Okno3(){ 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 Okno3(); }

14 Tworzenie własnego okna – klasa wewnętrzna import java.awt.*; import javax.swing.*; public class Okno2 extends JFrame{ public class MojPanel extends JPanel{ JButton b = new JButton("Przycisk"); public MojPanel(){ add(b); } MojPanel panel = new MojPanel(); public Okno2(){ super(); setContentPane(panel); setSize(500,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args){ new Okno2(); }

15 import java.awt.*; import javax.swing.*; public class Okno2 extends JFrame{ MojPanel panel = new MojPanel(); public Okno2(){ super(); setContentPane(panel); setSize(500,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args){ new Okno2(); } import java.awt.*; import javax.swing.*; public class MojPanel extends JPanel{ JButton b = new JButton("Przycisk"); public MojPanel(){ add(b); } … albo dwie klasy pakietu

16 W poprzedniej wersji J2SE, nie można było bezpośrednio dodawać komponentów na najwyższy poziom kontenerów Swing'a: JFrame, JDialog, JWindow, JApplet … i JInternalFrame. Na przykład, gdy mieliśmy instancję klasy JFrame nazywającą się myFrame i musieliśmy dodać komponent o nazwie komponent do JFrame musieliśmy wywołać metodę getContentPane z klasy JFrame: myFrame.getContentPane().add(komponent) Obecnie można dodawać komponenty na najwyższy poziom Swing'owych kontenerów.

17 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ę

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

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

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

21 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,' ');

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

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

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

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

26 Okna dialogowe MessageDialog ConfirmDialog InputDialog

27 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 :....; }

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

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

30 Menu 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); PlikEdycja OtwórzCzcionk a Zapisz JMenuBar JMenu JMenuItem

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

32 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

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

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

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

36

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

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


Pobierz ppt "Java 3 MPDI Programowanie obiektowe W8. Ponieważ pole statyczne nie wymaga tworzenia obiektu dla dostępu do pola, można wykorzystać takie pole do zliczania."

Podobne prezentacje


Reklamy Google