Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Java 3 MPDI Programowanie obiektowe W7. Ponieważ pole statyczne nie wymaga tworzenia obiektu, aby był do niego dostęp, można wykorzystać takie pole do.

Podobne prezentacje


Prezentacja na temat: "Java 3 MPDI Programowanie obiektowe W7. Ponieważ pole statyczne nie wymaga tworzenia obiektu, aby był do niego dostęp, można wykorzystać takie pole do."— Zapis prezentacji:

1 Java 3 MPDI Programowanie obiektowe W7

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

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

6

7 Tworzenie graficznych interfejsów użytkownika Swing

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

9 Komponenty JComponent JButton JLabel JTextField JTextArea JComboBox ustawienie rozmiarów ustawienie koloru tła ustawienie czcionki używanej do wyświetlania tekstu...

10 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

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

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

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

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

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

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

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

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

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

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

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

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

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

24 Okna dialogowe MessageDialog ConfirmDialog InputDialog

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

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

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

28 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

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

30 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

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

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

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

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

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

36 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;} }

37 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]; teraz klasa MojaFrame

38 //konstruktor klasy public MojaFrame(){ //tworzymy 3 pracowników biezacy[0] = new Pracownik("T.Bialy", ); 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);

39 //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); }

40 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(){} public void actionPerformed (ActionEvent zdarzenie){ t1.setText(""); t2.setText(""); t3.setText(""); }

41 //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

42 FlowLayout – od lewej do prawej BorderLayout


Pobierz ppt "Java 3 MPDI Programowanie obiektowe W7. Ponieważ pole statyczne nie wymaga tworzenia obiektu, aby był do niego dostęp, można wykorzystać takie pole do."

Podobne prezentacje


Reklamy Google