9. Swing wprowadzenie
|
|
- Rafał Markowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 9.1 Komponenty 9. Swing wprowadzenie 9.2 Przykłady tworzenia GUI W. Kasprzak: Programowanie zdarzeniowe Komponenty 1) Przegląd komponentów Swing-a 1. Kontenery główne 2. Kontenery ogólne pośredniego poziomu 3. Kontenery specjalne pośredniego poziomu 4. Podstawowe kontrolki (wejście od uŝytkownika) 5. Nieedytowalne komponenty informacyjne 6. Interaktywne komponenty z edytowalną sformatowaną informacją W. Kasprzak: Programowanie zdarzeniowe 9-2
2 Kontenery główne JApplet JDialog JFrame W. Kasprzak: Programowanie zdarzeniowe 9-3 Kontenery ogólne pośredniego poziomu JPanel JScrollPane JSplitPane JTabbedPane JToolBar W. Kasprzak: Programowanie zdarzeniowe 9-4
3 Kontenery specjalne pośredniego poziomu Internal frame Layered pane Root pane W. Kasprzak: Programowanie zdarzeniowe 9-5 Podstawowe kontrolki JButton JComboBox JList JMenu JSlider JSpinner JTextField lub JFormattedTextField W. Kasprzak: Programowanie zdarzeniowe 9-6
4 Nieedytowalne komponenty informacyjne JLabel JProgressBar JToolTip W. Kasprzak: Programowanie zdarzeniowe 9-7 Interaktywne komponenty z edytowalną sformatowaną informacją JColorChooser JFileChooser JTable JText JTree W. Kasprzak: Programowanie zdarzeniowe 9-8
5 2) Kontenery główne - JFrame, JDialog, JApplet Aby narysować komponent GUI na ekranie musi on naleŝeć do pewnej hierarchii komponentów, której korzeniem jest kontener główny. Komponent GUI moŝe być zawarty w danej hierarchii tylko raz dodanie go do innego kontenera spowoduje automatyczne usunięcie go z pierwszego. KaŜdy kontener główny zawiera content pane - zawiera (bezpośrednio lub pośrednio) wszystkie wizualne komponenty danego kontenera. Opcjonalnym elementem kontenera głównego jest pasek menu nie naleŝy on do content pane - zwykle umieszczany na górze obszaru kontenera. Przykład. Ramka zawiera pasek menu (kolor niebieski) i w content pane zawarta jest duŝa pusta etykieta w kolorze Ŝółtym. W. Kasprzak: Programowanie zdarzeniowe 9-9 Hierarchia komponentów Aplikacja o GUI opartym na Swing-u posiada przynajmniej jedną hierarchię komponentów o korzeniu będącym kontenerem klasy JFrame. Np. aplikacja ma trzy hierarchie komponentów jedną dla okna głównej ramka i dwa dla okien dialogowych (odpowiednio kontenery są obiektami klas JFrame i JDialog). W. Kasprzak: Programowanie zdarzeniowe 9-10
6 Aplet oparty na Swing-u posiada przynajmniej jedną hierarchię komponentów o korzeniu będącym obiektem klasy JApplet. Np. aplet posiadający okno dialogowe posiada dwie hierarchie komponentów jedna o korzeniu klasy JApplet a druga - JDialog. Dodanie komponentu do hierarchii metoda add dla content pane. Np. frame.getcontentpane().add(yellowlabel, BorderLayout.CENTER); Domyślna realizacja content pane to obiekt klasy pochodnej od JComponent posiadający menadŝera układu klasy BorderLayout. Panel zawartości moŝe być ustawiany przez uŝytkownika stosownie do jego wymagań. Uwaga: metoda getcontentpane zwraca obiekt klasy Container nie klasy JComponent wymaga konwersji do JComponent przed ustawieniem cech klasy JComponent panelu zawartości. Alternatywnym rozwiązaniem jest uczynienie własnego panelu panelem zawartości. Powinien on być nieprzezroczysty. Korzystamy z metody setcontentpane. Np. W. Kasprzak: Programowanie zdarzeniowe 9-11 // Utwórz panel i dodaj do niego komponenty JPanel contentpane = new JPanel(new BorderLayout()); contentpane.setborder(someborder); contentpane.add(somecomponent, BorderLayout.CENTER); contentpane.add(anothercomponent, BorderLayout.PAGE_END); // Uczyń panel panelem zawartości kontenera głównego contentpane.setopaque(true); głównykontener.setcontentpane(contentpane); Uwaga. Z zasady panelami zawartości nie powinny być obiekty klas przezroczystych kontenerów takich, jak JScrollPane, JSplitPane i JTabbedPane. Nawet po wymuszeniu ich nieprzezroczystości metodą setopaque(true) nie będą miały właściwego wyglądu. Jeszcze innym sposobem ustawienia panelu zawartości jest dodanie komponentu będącego kontenerem do panelu zawartości, który przykrywa w pełni obszar wizualizacji panelu. W. Kasprzak: Programowanie zdarzeniowe 9-12
7 Dodanie paska menu NaleŜy utworzyć obiekt klasy JMenuBar, dodać do niego obiekty menu i wywołać metodę setjmenubar. Np. frame.setjmenubar(cyanmenubar); Root Pane KaŜdy kontener główny zawiera pośredni kontener zwany root pane. Zarządza on content pane, paskiem menu i dalszymi kontenerami tzw. layered pane i glass pane. layered pane zawiera panel zawartości i pasek menu, umoŝliwia uporządkowanie dalszych komponentów na osi Z; glass pane słuŝy do przechwytywania zdarzeń wprowadzania informacji dla kontenera głównego i do jednoczesnego rysowania w obszarze wielu komponentów. W. Kasprzak: Programowanie zdarzeniowe Przykłady tworzenia GUI Pakiet Swing ( javax.swing ) jest częścią "Java Foundation Classes (JFC)". Swing dostarcza wizualnych komponentów aplikacji - od przycisków do dzielonych paneli i wykazów - wspomagając uŝytkownika podczas projektowania jego GUI. Nazwy komponentów Swing-a rozpoczynają się na literę J. Pakiet Swing pojawił się jako dodatek do JDK 1.1. Przedtem komponenty GUI pochodziły z Abstract Window Toolkit (AWT) - w JDK 1.0 i 1.1. Wprawdzie Java 2 nadal zawiera komponenty AWT jednak powinniśmy zasadniczo korzystać z komponentów Swing-a. Gdy komponenty Swing-a "przecinają się" na ekranie z komponentami AWT, te ostatnie są zawsze kreślone na wierzchu. W. Kasprzak: Programowanie zdarzeniowe 9-14
8 1) Pierwszy program w Swing-u Przykład 9.1. Program HelloWorldSwing. Wizualny efekt programu: Kod programu HelloWorldSwing: import javax.swing.*; // Zaimportuj główny pakiet Swing-a. public class HelloWorldSwing { public static void main(string[] args) { JFrame frame = new JFrame("HelloWorldSwing"); // Kontener główny. final JLabel label = new JLabel("Hello World"); // Komponent frame.getcontentpane().add(label); // Dodaj etykietę do kontenera frame.setdefaultcloseoperation(jframe.exit_on_close); // Ustaw // domyślną reakcję obiektu klasy JFrame na aktywację przycisku "close". frame.pack(); // Przygotuj okno do prezentacji frame.setvisible(true); // Wyświetl okno Komentarz 1) Obok głównego pakietu W. Kasprzak: Programowanie zdarzeniowe 9-15 import javax.swing.*; większość programów w Swing-u będzie potrzebować 2 pakietów AWT: import java.awt.*; import java.awt.event.*; w celu obsługi zdarzeń. 2) KaŜdy program GUI w Swing-u wymaga przynajmniej jednego głównego kontenera, wspomagającego komponenty w rysowaniu i obsłudze zdarzeń. Istnieją 3 kontenery główne: JFrame, JDialog, JApplet (dla apletów). Obiekt klasy JFrame implementuje pojedyncze główne okno; Obiekt klasy JDialog implementuje wtórne okno (zaleŝne od innego okna); Obiekt klasy JApplet implementuje obszar ekranu wewnątrz okna przeglądarki. Obiekt klasy JFrame implementowany jest wizualnie jako okno posiadające "dekoracje" w postaci: ramki, tytułu, przycisków dla zmniejszania ("ikonizacji") i zamykania okna. W. Kasprzak: Programowanie zdarzeniowe 9-16
9 2) Przyciski i etykiety. Inny sposób zamykania okna to skorzystanie z mechanizmu obsługi zdarzeń - WindowListener: Np. frame.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); Przykład 9.2. Program SwingApplication. Po kaŝdym kliknięciu przycisku (obiekt klasy JButton) modyfikowana jest wartość etykiety (obiekt klasy JLabel). import javax.swing.*; import java.awt.*; W. Kasprzak: Programowanie zdarzeniowe 9-17 import java.awt.event.*; public class SwingApplication { private static String labelprefix = "Number of button clicks: "; private int numclicks = 0; public Component createcomponents() { // Utwórz komponenty final JLabel label = new JLabel(labelPrefix + "0 "); JButton button = new JButton("I'm a Swing button!"); button.setmnemonic(keyevent.vk_i); // Skrót klawiszowy dla akcji przycisku button.addactionlistener(new ActionListener() { // Rejestracja obsługi // zdarzenia i blok inicjalizacji instancji klasy anonimowej public void actionperformed(actionevent e) { // Metoda obsługi zdarzenia numclicks++; label.settext(labelprefix + numclicks); ); label.setlabelfor(button); // Ustawia komponent, dla którego przeznaczona jest // ta etykieta. W. Kasprzak: Programowanie zdarzeniowe 9-18
10 /* Zawartość kontenera będzie dodana do obiektu klasy JPanel:*/ JPanel pane = new JPanel(); pane.setborder(borderfactory.createemptyborder( // Definicja brzegu. 30, // góra 30, // lewa strona 10, // dół 30) // prawa strona ); pane.setlayout(new GridLayout(1, 2)); // Nowy menadŝer układu. pane.add(button); pane.add(label); return pane; public static void main(string[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch (Exception e) { W. Kasprzak: Programowanie zdarzeniowe 9-19 // Utwórz obiekt głównego kontenera i dodaj komponenty: JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createcomponents(); frame.getcontentpane().add(contents, BorderLayout.CENTER); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); Uwagi do powyŝszego programu: (1) Program SwingApplication korzysta z 4 komponentów Swing-a: kontenera głównego ramki (JFrame) - czyli głównego okna GUI; kontenera pośredniego panelu (JPanel) ; kontrolki - przycisku (JButton) ; komponentu - etykiety (JLabel). JPanel jako pośredni kontener upraszcza pozycjonowanie komponentów takich jak przycisk i etykieta. Inne waŝne pośrednie kontenery to: W. Kasprzak: Programowanie zdarzeniowe 9-20
11 panel z moŝliwością przewijania (JScrollPane) i panel z zakładkami (JTabbedPane). Program moŝe generować okno o postaci zaleŝnej od systemu - programista moŝe wybrać postać okna: wygląd charakterystyczny dla Java, CDE/Motif, Windows, lub inny. Java CDE/Motif Windows public static void main(string[] args) { try { UIManager.setLookAndFeel( // Ustawia wygląd okna UIManager.getCrossPlatformLookAndFeelClassName()); // Podaje klasę implementującą dekoracje typowe dla środowiska Java. catch (Exception e) {... // Utwórz i wizualizuj GUI. W. Kasprzak: Programowanie zdarzeniowe 9-21 (2) Utworzenie przycisku i etykiety. Np. inicjalizacja przycisku: JButton button = new JButton("I'm a Swing button!"); // Utwórz obiekt button.setmnemonic('i'); // Ustaw klawisz "i" jako skrót akcji. button.addactionlistener(... obiekt nasłuchujący...); // Rejestruj obsługę Np. inicjalizacja etykiety:...// W miejscu deklaracji zmiennych: private static String labelprefix = "Number of button clicks: "; private int numclicks = 0;...// W kodzie inicjalizacji dla GUI: final JLabel label = new JLabel(labelPrefix + "0 ");... label.setlabelfor(button); // Etykieta jest przeznaczona dla przycisku...// W procedurze obsługi zdarzenia "kliknięcia" przycisku: label.settext(labelprefix + numclicks); // Zmiana tekstu etykiety W. Kasprzak: Programowanie zdarzeniowe 9-22
12 3) Listy opcji Istnieje abstrakcyjna klasa public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants Ta klasa opisuje wspólne cechy dla klas JButton i JMenuItem. Po tych klasach dziedziczą: klasy pól wyboru JCheckBox i przycisków radiowych JRadioButton; klasy opcji "menu" (JCheckBoxMenuItem, JMenu, JRadioButtonMenuItem). Pola wyboru (check box) są zbliŝone funkcjonalnie do przycisków radiowych (radio button), ale inny jest ich tryb wyboru z grupy takich W. Kasprzak: Programowanie zdarzeniowe 9-23 samych elementów - z grupy pól wyboru moŝna wybrać dowolną ich liczbę naraz, ale z grupy przycisków radiowych - tylko jeden przycisk. Inna kontrolka wyboru opcji to lista wysuwnych opcji (JComboBox). (4) Brzegi panelu Wokół komponentów panelu istnieje pusty obszar - "brzeg" utworzony metodą setborder: pane.setborder(borderfactory.createemptyborder( 30, // rozmiar brzegu u góry wyraŝony w pikselach 30, // na lewo 10, // u dołu 30) // na prawo ); W. Kasprzak: Programowanie zdarzeniowe 9-24
13 5) Panel zawartości ( content pane ) KaŜdy kontener główny posiada jeden ukryty kontener pomocniczy "content pane". Za wyjątkiem paska menu panel zawartości zawiera wszystkie wizualne komponenty głównego okna. Do dołączania komponentów do kontenera słuŝą róŝne wersje metody add(). Np. frame = new JFrame(...); button = new JButton(...); label = new JLabel(...); pane = new JPanel(); pane.add(button); pane.add(label); frame.getcontentpane().add(pane, BorderLayout.CENTER); W. Kasprzak: Programowanie zdarzeniowe ) Obsługa zdarzeń Typowe zdarzenia w systemie to przyciśnięcie klawisza klawiatury lub przycisku myszy. KaŜdy obiekt moŝe zostać powiadomiony o zdarzeniu - wystarczy, jeśli implementuje właściwy interfejs i jest zarejestrowany jako "listener" dla odpowiedniego źródła zdarzeń. Obsługa zdarzeń wymaga trzech fragmentów kodu. a. Definicja klasy obsługującej zdarzenia jest to klasa implementująca właściwy interfejs XXXListener lub dziedzicząca po klasie, która implementuje taki interfejs; np. public class MojaKlasa implements ActionListener { b. Rejestracja obiektu tej klasy dla obsługi zdarzenia jednego lub więcej komponentów; np. komponent.addactionlistener(obiektklasy); c. Definicja metod interfejsu w treści klasy obsługującej zdarzenie. Np. public void actionperformed(actionevent e) {...// właściwy kod obsługi zdarzenia W. Kasprzak: Programowanie zdarzeniowe 9-26
14 Uwaga: często klasa obsługi zdarzenia definiowana jest jako anonimowa klasa wewnętrzna. W klasie SwingApplication są dwa rodzaje obsługi zdarzeń: dla zamykania okna ("WindowListener"), dla przycisku ("ActionListener"). button.addactionlistener(...); - rejestracja obsługi zdarzenia dla button. Np. button.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); ); Zdarzenie typu "Action" dla przycisku spowoduje wywołanie metody actionperformed (jedynej metody deklarowanej w interfejsie ActionListener) o jednym argumencie, obiekcie klasy ActionEvent, podającym informację o zdarzeniu i jego źródłowym obiekcie. W. Kasprzak: Programowanie zdarzeniowe 9-27 Przykłady zdarzeń zgłaszanych przez komponenty Swing: Zjawisko powodujące zdarzenie UŜytkownik wybiera i "klika" na przycisk, wybiera "Return" pisząc w polu tekstowym, lub wybiera element menu. UŜytkownik zamyka główne okno. UŜytkownik "klika" myszą, gdy kursor znajduje się nad komponentem. UŜytkownik przesuwa kursor myszą nad komponentem. Komponent staje się widoczny. Komponent uzyskuje kontekst klawiatury. Zmiany opcji na wykazie lub liście. Typ obsługi zdarzenia ActionListener WindowListener MouseListener MouseMotionListener ComponentListener FocusListener ListSelectionListener Obsługa zdarzeń aplikacji realizowana jest w jednym wątku. W. Kasprzak: Programowanie zdarzeniowe 9-28
15 4) Pole tekstowe, tekst w HTML i ikonki Klasa JTextField pole tekstowe Utworzenie obiektu typu pole tekstowe, np.: JTextField tempcelsius = null; tempcelsius = new JTextField(5); Parametr konstruktora podaje liczbę kolumn pola tekstowego, co wraz z miarą dla aktualnej czcionki wyznacza szerokość pola. Przykład 9.3. Program CelsiusConverter: uŝytkownik wprowadza wartość temperatury wyraŝoną w stopniach Celsjusza, wybiera przycisk "Convert" a komponent - "etykieta" podaje równowaŝną wartość w stopniach Fahrenheita. import java.awt.*; import java.awt.event.*; W. Kasprzak: Programowanie zdarzeniowe 9-29 import javax.swing.*; // Klasa zawiera komponenty typu JButton, JTextField, JLabel. public class CelsiusConverter implements ActionListener { JFrame converterframe; // Identyfikator ramki JPanel converterpanel; // Identyfikator panelu JTextField tempcelsius; // Identyfikator pola teksowego JLabel celsiuslabel, fahrenheitlabel; // Dwa identyfkatory etykiet JButton converttemp; // Identyfikator przycisku // Konstruktor : public CelsiusConverter() { // Utwórz okno główne i panel converterframe = new JFrame("Convert Celsius to Fahrenheit"); converterpanel = new JPanel(); converterpanel.setlayout(new GridLayout(2, 2)); addwidgets(); // Dołącz komponenty - metoda programisty // Dołącz panel to okna. converterframe.getcontentpane().add ( converterpanel, BorderLayout.CENTER); W. Kasprzak: Programowanie zdarzeniowe 9-30
16 // Zakończ program, gdy okno zostanie zamknięte. converterframe.setdefaultcloseoperation(jframe.exit_on_close); // Realizacja i pierwsza wizualizacja ramki z komponentami: converterframe.pack(); converterframe.setvisible(true); // Koniec konstruktora // Metoda dla tworzenia i dołączania komponentów: private void addwidgets() { tempcelsius = new JTextField(2); celsiuslabel = new JLabel("Celsius", SwingConstants.LEFT); converttemp = new JButton("Convert..."); fahrenheitlabel = new JLabel("Fahrenheit", SwingConstants.LEFT); // Rejestruj obiekt dla obsługi zdarzeń dla przycisku Convert : converttemp.addactionlistener(this); // Dołącz komponenty do panelu: converterpanel.add(tempcelsius); converterpanel.add(celsiuslabel); converterpanel.add(converttemp); W. Kasprzak: Programowanie zdarzeniowe 9-31 converterpanel.add(fahrenheitlabel); celsiuslabel.setborder(borderfactory.createemptyborder(5,5,5,5)); fahrenheitlabel.setborder(borderfactory.createemptyborder(5,5,5,5)); // Koniec metody addwidgets() // Implementacja interfejsu ActionListener: public void actionperformed(actionevent event) { // Pobierz i zamień napis na wartość double oraz przelicz na Fahrenheita: int tempfahr = (int)((double.parsedouble(tempcelsius.gettext())) * ); fahrenheitlabel.settext(tempfahr + " Fahrenheit"); // Metoda main public static void main(string[] args) { // Ustaw wygląd okna try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch(exception e) { W. Kasprzak: Programowanie zdarzeniowe 9-32
17 // Utwórz obiekt klasy programisty: CelsiusConverter converter = new CelsiusConverter(); Komentarz: Obsługa zdarzeń dla przycisku "convert" zawiera operację pobrania napisu i jego konwersję na liczbę: JButton converttemp;... converttemp.addactionlistener(this);... public void actionperformed(actionevent event) { int tempfahr = (int)((double.parsedouble(tempcelsius.gettext())) * ); fahrenheitlabel.settext(tempfahr + " Fahrenheit"); W. Kasprzak: Programowanie zdarzeniowe 9-33 Dołączanie tekstu sformatowanego w HTML Tekst przycisków i etykiet moŝe być specyfikowany w języku HTML. Specyfikacja tekstu w HTML dla obiektu typu "etykieta" polega na rozpoczęciu napisu od znacznika <HTML> i podaniu poprawnego kodu w html. Jest to poŝyteczne rozwiązanie wtedy, gdy zmieniamy krój czcionki i kolor lub wprowadzamy łamanie wiersza w polu etykiety. Przykład 9.4. Poprzedni program 9.3 po zmianach uwzględniających tekst w HTML: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CelsiusConverter2 implements ActionListener { JFrame converterframe; W. Kasprzak: Programowanie zdarzeniowe 9-34
18 JPanel converterpanel; JTextField tempcelsius; JLabel celsiuslabel, fahrenheitlabel; JButton converttemp; public CelsiusConverter2() { converterframe = new JFrame("Convert Celsius to Fahrenheit"); converterpanel = new JPanel(); converterpanel.setlayout(new GridLayout(2, 2)); addwidgets(); converterframe.getcontentpane().add(converterpanel, BorderLayout.CENTER); converterframe.setdefaultcloseoperation(jframe.exit_on_close); converterframe.pack(); converterframe.setvisible(true); private void addwidgets() { ImageIcon icon = new ImageIcon("img/convert.gif", "Convert temperature"); tempcelsius = new JTextField(2); W. Kasprzak: Programowanie zdarzeniowe 9-35 celsiuslabel = new JLabel("Celsius", SwingConstants.LEFT); converttemp = new JButton(icon); fahrenheitlabel = new JLabel("Fahrenheit", SwingConstants.LEFT); celsiuslabel.setborder(borderfactory.createemptyborder(5,5,5,5)); fahrenheitlabel.setborder(borderfactory.createemptyborder(5,5,5,5)); converttemp.addactionlistener(this); converterpanel.add(tempcelsius); converterpanel.add(celsiuslabel); converterpanel.add(converttemp); converterpanel.add(fahrenheitlabel); public void actionperformed(actionevent event) { int tempfahr = (int)((double.parsedouble(tempcelsius.gettext())) * ); // HTML: kolor czcionki zaleŝy teraz od wartości temperatury: if (tempfahr <= 32) { fahrenheitlabel.settext("<html><font Color=blue>" + tempfahr + "° </Font><Font Color=black> Fahrenheit</font></html>"); W. Kasprzak: Programowanie zdarzeniowe 9-36
19 else if (tempfahr <= 80) { fahrenheitlabel.settext("<html><font Color=green>" + tempfahr + "° </Font><Font Color=black> Fahrenheit </Font></html>"); else { fahrenheitlabel.settext("<html><font Color=red>" + tempfahr + "° </Font><Font Color=black> Fahrenheit</Font></html>"); public static void main(string[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch(exception e) { CelsiusConverter2 converter = new CelsiusConverter2(); Wyświetlanie symbolu temperatury umoŝliwia kod w html-u: °. Metoda setfont umoŝliwia ustawienie czcionki dla całego komponentu. W. Kasprzak: Programowanie zdarzeniowe 9-37 Dołączanie ikon "Ikona" to obraz o ustalonym rozmiarze. Obiekt typu "ikona" odwołuje się do interfejsu Icon. Implementacja tego interfejsu w Swingu to np.: ImageIcon - rysuje obraz zadany w formacie GIF lub JPEG. Np. ImageIcon icon = new ImageIcon("img/convert.gif", // Nazwa pliku obrazka "Convert temperature");... converttemp = new JButton(icon); // PrzekaŜ ikonę konstruktorowi etykiety W. Kasprzak: Programowanie zdarzeniowe 9-38
20 5) Wiele paneli, listy opcji, obrazy Przykład 9.5. Program LunarPhases : uŝytkownik wybiera fazę księŝyca z listy, a odpowiedni obraz pojawia się w obszarze dolnego panelu. import java.awt.*; import java.awt.event.*; import javax.swing.*; W. Kasprzak: Programowanie zdarzeniowe 9-39 import java.net.url; public class LunarPhases implements ActionListener { final static int NUM_IMAGES = 8; final static int START_INDEX = 3; ImageIcon[] images = new ImageIcon[NUM_IMAGES]; JPanel mainpanel, selectpanel, displaypanel; // Ident. trzech paneli JComboBox phasechoices = null; // Dla listy wysuwnych opcji JLabel phaseiconlabel = null; public LunarPhases() { // Konstruktor utworzy 3 panele. selectpanel = new JPanel(); // Najpierw utworzymy 2 pod-panele displaypanel = new JPanel(); addwidgets(); // Dołączenie komponentów do paneli // Główny panel będzie zawierać 2 pod-panele mainpanel = new JPanel(); mainpanel.setlayout(new GridLayout(2,1,5,5)); mainpanel.setborder(borderfactory.createemptyborder(5,5,5,5)); // Dołącz pod-panele. W. Kasprzak: Programowanie zdarzeniowe 9-40
21 mainpanel.add(selectpanel); mainpanel.add(displaypanel); // Koniec konstruktora // Metoda tworzenia komponentów dla listy opcji i prezentacji faz księŝyca. private void addwidgets() { for (int i = 0; i < NUM_IMAGES; i++) { String imagename = "images/image" + i + ".jpg"; System.out.println("getting image: " + imagename); // Pobierz obraz URL iconurl = ClassLoader.getSystemResource(imageName); ImageIcon icon = new ImageIcon(iconURL); images[i] = icon; // Utwórz obiekt typu "etykieta" dla wyświetlania obrazów phaseiconlabel = new JLabel(); phaseiconlabel.sethorizontalalignment(jlabel.center); phaseiconlabel.setverticalalignment(jlabel.center); phaseiconlabel.setverticaltextposition(jlabel.center); phaseiconlabel.sethorizontaltextposition(jlabel.center); W. Kasprzak: Programowanie zdarzeniowe 9-41 phaseiconlabel.setborder(borderfactory.createcompoundborder( BorderFactory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5,5,5,5))); phaseiconlabel.setborder(borderfactory.createcompoundborder( BorderFactory.createEmptyBorder(0,0,10,0), phaseiconlabel.getborder())); // Utwórz wysuwaną listę opcji - faz księŝyca String[] phases = { "New", "Waxing Crescent", "First Quarter", "Waxing Gibbous", "Full", "Waning Gibbous", "Third Quarter", "Waning Crescent" ; phasechoices = new JComboBox(phases); phasechoices.setselectedindex(start_index); // Wyświetl pierwszy obraz. phaseiconlabel.seticon(images[start_index]); phaseiconlabel.settext(""); // Dodaj obramowanie panelu wyboru selectpanel.setborder(borderfactory.createcompoundborder( BorderFactory.createTitledBorder("Select Phase"), BorderFactory.createEmptyBorder(5,5,5,5))); W. Kasprzak: Programowanie zdarzeniowe 9-42
22 // Dodaj obramowanie panelu wyświetlania displaypanel.setborder(borderfactory.createcompoundborder( BorderFactory.createTitledBorder("Display Phase"), BorderFactory.createEmptyBorder(5,5,5,5))); // Dodaj listę opcji do panelu wyboru i etykietę z obrazem do 2-go panelu selectpanel.add(phasechoices); displaypanel.add(phaseiconlabel); // Zarejestruj swoją obsługę zdarzeń dla listy opcji: phasechoices.addactionlistener(this); // Implementacja obsługi zdarzeń public void actionperformed(actionevent event) { if ("comboboxchanged".equals(event.getactioncommand())) { // Zmodyfikuj ikonę - odpowiednio do aktualnego wyboru phaseiconlabel.seticon(images[phasechoices.getselectedindex()]); public static void main(string[] args) { // Metoda main W. Kasprzak: Programowanie zdarzeniowe 9-43 LunarPhases phases = new LunarPhases(); // Nowy obiekt głównej klasy JFrame lunarphasesframe = new JFrame("Lunar Phases"); // Utwórz okno try { // Ustaw wygląd okna: UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); catch(exception e) { // Ustaw kontener: lunarphasesframe.setcontentpane(phases.mainpanel); // Zakończ po zamknięciu okna lunarphasesframe.setdefaultcloseoperation(jframe.exit_on_close); // Realizacja i wizualizacja ramki lunarphasesframe.pack(); lunarphasesframe.setvisible(true); Uwagi do programu (1) Panele w głównym oknie W. Kasprzak: Programowanie zdarzeniowe 9-44
23 Trzy panele programu LunarPhases rozmieszczono następująco: Wszystkie 3 panele tworzone są w konstruktorze klasy LunarPhases a następnie dwa z nich (selectpanel, displaypanel) dołączane są do trzeciego (mainpanel). mainpanel = new JPanel(); mainpanel.setlayout(new GridLayout(2,1,5,5)); mainpanel.setborder(borderfactory.createemptyborder(5,5,5,5)); mainpanel.add(selectpanel); mainpanel.add(displaypanel); Za właściwy rozmiar i rozmieszczenie dołączanych komponentów w głównym panelu odpowiada menadŝer rozkładu. Domniemanym zarządcą dla JPanel jest FlowLayout - rozmieszczanie od lewej do prawej. W. Kasprzak: Programowanie zdarzeniowe 9-45 (2) ZłoŜony brzeg W omawianym przykładzie oba panele (selectpanel i displaypanel) posiadają złoŝone brzegi, które składają się z zewnętrznego brzegu z tytułem i wewnętrznego brzegu "pustego". Np. dodanie brzegu dla selectpanel : selectpanel.setborder(borderfactory.createcompoundborder( BorderFactory.createTitledBorder("Select Phase"), BorderFactory.createEmptyBorder(5,5,5,5))); Podobny kod wystąpi dla ustawienia brzegu panelu displaypanel. W. Kasprzak: Programowanie zdarzeniowe 9-46
24 (3) Lista wysuwanych opcji Wysuwalna lista opcji jest domyślnie nieedytowalną listą. Nieedytowalna lista wysuwana wygląda początkowo jak przycisk.. Po jej wybraniu wyświetlona zostaje lista wykluczających się opcji.. Np. utworzenie i ustawienie wysuwanej listy opcji - phasechoices: phasechoices = new JComboBox(phases); phasechoices.setselectedindex(start_index); // Początkowy napis W powyŝszym kodzie następuje inicjalizacja obiektu tablicą napisów. Inne sposoby inicjalizacji - przekazanie ikonek lub wektora danych. W. Kasprzak: Programowanie zdarzeniowe 9-47 (4) Obsługa zdarzeń dla wysuwanej listy opcji Wysuwalna lista opcji zgłasza zdarzenie typu akcji ("Action") po wybraniu przez uŝytkownika jednej z jej opcji. Przykład kodu obsługi takiego zdarzenia: phasechoices.addactionlistener(this);... public void actionperformed(actionevent event) { if ("comboboxchanged".equals(event.getactioncommand())) { // Zmień ikonę w celu wyświetlenia wybranej fazy księŝyca phaseiconlabel.seticon(images[phasechoices.getselectedindex()]); Kod obsługi - pobierz indeks wybranej opcji, zamień go na nazwę obrazu i zmodyfikuj etykietę dla wyświetlenia właściwej ikony. (5) Wiele obrazów W programie LunarPhases obiekt typu "etykieta" wykorzystuje 8 obrazów, ale tylko jeden z nich jest widoczny w danej chwili. Mamy wybór W. Kasprzak: Programowanie zdarzeniowe 9-48
25 pomiędzy wcześniejszym załadowaniem wszystkich obrazów a ładowaniem pojedynczego obrazu w razie jego wybrania. Np. wszystkie obrazy ładowane są na raz z chwilą tworzenia obiektu. final static int NUM_IMAGES = 8; final static int START_INDEX = 3; ImageIcon[] images = new ImageIcon[NUM_IMAGES];... private void addwidgets() { // W metodzie addwidgets: // pobierz obrazy i umieść je w tablicy ikonek typu ImageIcon. for (int i = 0; i < NUM_IMAGES; i++) { String imagename = "images/image" + i + ".jpg"; URL iconurl = ClassLoader.getSystemResource(imageName); ImageIcon icon = new ImageIcon(iconURL); images[i] = icon; Wykorzystano tu metodę getsystemresource w klasie ClassLoader która poszukuje plików na domyślnej ścieŝce klas. W. Kasprzak: Programowanie zdarzeniowe ) Przyciski radiowe JRadioButton. Okna dialogowe JOptionPane. Przykład 9.6. Program VoteDialog ilustruje tworzenie dialogu z uŝytkownikiem i korzystanie z przycisków radiowych. UŜytkownik wybiera właściwy przycisk radiowy i potwierdza swój wybór przyciskiem "głosowania". Pojawia się potwierdzenie w postaci okna dialogowego, które moŝe teŝ być kontynuacją zapytań. import javax.swing.*; import java.awt.*; W. Kasprzak: Programowanie zdarzeniowe 9-50
26 import java.awt.event.*; public class VoteDialog extends JPanel { JLabel label; JFrame frame; String simpledialogdesc = "The candidates"; public VoteDialog(JFrame frame) { // Konstruktor klasy głównej this.frame = frame; JLabel title; // Utwórz komponenty JPanel choicepanel = createsimpledialogbox(); // Metoda własna title = new JLabel("Click the \"Vote\" button" + " once you have selected a candidate.", JLabel.CENTER); label = new JLabel("Vote now!", JLabel.CENTER); label.setborder(borderfactory.createemptyborder(10,10,10,10)); choicepanel.setborder(borderfactory.createemptyborder(20,20,5,20)); // Ustal rozkład komponentów. W. Kasprzak: Programowanie zdarzeniowe 9-51 setlayout(new BorderLayout()); add(title, BorderLayout.NORTH); add(label, BorderLayout.SOUTH); add(choicepanel, BorderLayout.CENTER); // Koniec konstruktora void setlabel(string newtext) { label.settext(newtext); // PoniŜsza metoda tworzy okno dialogowe private JPanel createsimpledialogbox() { final int numbuttons = 4; JRadioButton[] radiobuttons = new JRadioButton[numButtons]; final ButtonGroup group = new ButtonGroup(); // Grupa przycisków JButton votebutton = null; final String defaultmessagecommand = "default"; final String yesnocommand = "yesno"; final String yeahnahcommand = "yeahnah"; final String ynccommand = "ync"; W. Kasprzak: Programowanie zdarzeniowe 9-52
Java - interfejs graficzny
Java - interfejs graficzny Pakiet Swing Pakiet Swing przygotował: pawel@kasprowski.pl Czym jest Swing? Rozszerzenie AWT (Abstract Windows Toolkit) do tworzenia GUI (Graphical User Interface) w Javie import
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoProgramowanie zdarzeniowe
Programowanie zdarzeniowe II. Biblioteka Swing Małgorzata Prolejko ZDA JA16Z03 Plan Struktura Swing Komponenty proste Ramki Kolejność warstw Zarządca układu Panele Komponenty złożone Okna dialogowe i wewnętrzne
Bardziej szczegółowoPodstawy Języka Java
Podstawy Języka Java Wprowadzenie do AWT AWT Abstract Window Toolkit, biblioteka wykorzystywana do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi elementów interfejsu użytkownika wykorzystuje
Bardziej szczegółowoProgramowanie graficznych interfejsów użytkownika
Programowanie obiektowe Programowanie graficznych interfejsów użytkownika Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie
Bardziej szczegółowoProgramowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006
Programowanie graficznego interfejsu użytkownika Wykład 8 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 maja 2006 Spis treści 1 JFC/Swing 1 1.1 Prosty przykład.................................
Bardziej szczegółowoProgramowanie w Javie Wykład 6 Okienka w Javie (AWT)
Programowanie w Javie Wykład 6 Okienka w Javie (AWT) Płock 2014/2015 Wprowadzenie do AWT AWT Abstract Window Toolkit, wykorzystywany do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w
Bardziej szczegółowoGraphic User Interfaces pakiet Swing
Graphic User Interfaces pakiet Swing Streszczenie Celem wykładu jest zaprezentowanie podstaw tworzenia graficznych interfejsów przy użyciu pakietu Swing. Czas wykładu 90 minut. Można śmiało stwierdzić,
Bardziej szczegółowoMateriał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com GUI-Swing Wstęp do tworzenia prostych aplikacji z interfejsem graficznym (GUI) przy pomocy Swing, rysowanie prostych
Bardziej szczegółowoKontenery i komponenty graficzne
JAVA Kontenery i komponenty graficzne Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Opracował: Andrzej Nowak Kontenery Aplikacja okienkowa składa
Bardziej szczegółowoTworzenie elementów graficznych
Tworzenie elementów graficznych Elementy graficzne w Javie pozwalające tworzyć Graficzny Interfejs Użytkownika (GUI) możemy podzielić na dwie grupy: AWT (Abstract Window Toolkit) bibliotek klas służąca
Bardziej szczegółowoInformatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.
Kierunek: Informatyka i Ekonometria Przedmiot: Programowanie komputerów Forma zajęć: Ćwiczenia Temat: Tworzenie aplikacji z wykorzystaniem graficznego interfejsu użytkownika - Swing. Biblioteka SWING podstawowa
Bardziej szczegółowoSWING. dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com
SWING dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? Przykład aplikacji z GUI Zarządcy układu Obsługa zdarzeń Komponenty GUI Wprowadzenie obiektowy paradygmat do tworzenia
Bardziej szczegółowoProgramowanie zdarzeniowe
Programowanie zdarzeniowe I. Podstawy obsługi zdarzeń Małgorzata Prolejko ZDA JA16Z03 Plan Pojęcie zdarzenia Klasy i obiekty słuchaczy Rejestracja słuchaczy Obsługa naciśnięcia przycisku Rozpoznawanie
Bardziej szczegółowoInformatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Interfejs GUI wysokiego poziomu Pojęcie
Bardziej szczegółowoSWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe.
SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/ http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,
Bardziej szczegółowoPodstawy Swing. Tomasz Borzyszkowski
Podstawy Swing Tomasz Borzyszkowski Wprowadzenie Już Java 1.0 zawierała bibliotekę AWT (Abstract Window Toolkit) służącą do oprogramowania GUI. Kolejne wersje Java również wspierały to rozwiązanie. Swing
Bardziej szczegółowoMarcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science
Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Abstract Window Toolkit Przekazuje tworzenie i
Bardziej szczegółowoLABORATORIUM 7 Cel: 1_1
LABORATORIUM 7 Cel: Budowa klas z wykorzystaniem dziedziczenia oraz implementowania interfejsów. Wprowadzenie do trybu graficznego -cd. Animacje obiektów w trybie graficznym obsługa zdarzeń od klawiatury
Bardziej szczegółowoWYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 5, część 1 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa
Bardziej szczegółowoProgramowanie w języku JAVA. Wykład IV Swing - GUI
Programowanie w języku JAVA Wykład IV Swing - GUI Architektura 2 JFC (Java Foundation Classes) zbiór klas do budowy interfejsu graficznego użytkownika i interaktywności aplikacji Javy Komponenty Swing
Bardziej szczegółowoJava niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika
Java niezbędnik programisty spotkanie nr 12 Graficzny interfejs użytkownika 1 Graphical User Interface (GUI) Abstract Window Toolkit Swing słabo się prezentuje mało obiektowy projekt i implementacja zajęły
Bardziej szczegółowoJava SE Laboratorium nr 5. Temat: Obsługa zdarzeń
Java SE Laboratorium nr 5 Temat: Obsługa zdarzeń 1 Obsługa zdarzeń 1. Definicja i idea Każda z aplikacji zmienia swój stan (reaguje) pod wpływem zdarzeń. Mogą to być zdarzenia generowane przez urządzenia
Bardziej szczegółowoKurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016
Wykład 4 23 marca 2016 Graficzny interfejs użytkownika - GUI W Javie możemy skorzystać z dwóch bibliotek do tworzenia graficznych interfejsów: AWT (Abstract Windowing Toolkit) podstawowa biblioteka będaca
Bardziej szczegółowoJava biblioteka Swing
Java biblioteka Swing Podstawowe klasy Klasa JComponent Klasa JFrame Klasa JFrame Klasa bazowa dla okien Ważne właściwości: settitle ( ) setdefaultcloseoperation ( ) setsize ( ), setlocation ( ) setlayout
Bardziej szczegółowoKlasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract
Klasy abstrakcyjne Klasa abstrakcyjna jest to klasa której obiekty nie mogą być tworzone, może być natomiast dziedziczona. Może posiadać konstruktor, może on być jednak wywołany tylko przez klasy pochodne.
Bardziej szczegółowoInteraktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach
Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach Przykład 1 a) Program ProstyAplet2.class uruchomiony jako aplet w przeglądarce
Bardziej szczegółowoJAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt
JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia
Bardziej szczegółowoPierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10
Pierwsza ramka dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 1 / 10 Pierwsza ramka - kod package myframe1; import javax.swing.jframe; import javax.swing.jlabel; class MyFrame1
Bardziej szczegółowoProgramowanie Obiektowe GUI
Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoTworzenie i obsługa graficznego interfejsu uŝytkownika
Tworzenie i obsługa graficznego interfejsu uŝytkownika Programowanie w środowisku rozproszonym. Wykład 3. Aplety aplikacje uruchamiane w środowisku przeglądarki - przykład import java.applet.applet; import
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 12: GUI. Aplety. 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Pakiety graficzne w Javie AWT (Abstract Window Toolkit) Swing Java 1.1 Java 2.0 Java 2D Java 3D Java Media
Bardziej szczegółowosetdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); } //wyświetlenie okna
Programowanie wizualne- pakiet Swing 1. Główny obiekt interfejsu uŝytkownika - obiekt klasy JFrame 1.1. Przykład prostej aplikacji Zdefiniowanie klasy dziedziczącej po klasie JFrame z pakietu Swing (lub
Bardziej szczegółowoAplikacja wielowątkowa prosty komunikator
Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host
Bardziej szczegółowoGrafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki
UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel, dr hab. Bogdan Kwolek v1.01 2010 Grafika i komunikacja człowiek komputer Laboratorium Część 1: Wstęp do grafiki ZAGADNIENIA
Bardziej szczegółowoSWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty.
SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/ http://th-www.if.uj.edu.pl/zfs/ciesla/
Bardziej szczegółowoSWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.
SWING c.d. ZAGADNIENIA: przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/dnd/ http://th-www.if.uj.edu.pl/zfs/ciesla/
Bardziej szczegółowoDodanie nowej formy do projektu polega na:
7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie
Bardziej szczegółowoLaboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu
Laboratorium z Grafiki InŜynierskiej CAD W przygotowaniu ćwiczeń wykorzystano m.in. następujące materiały: 1. Program AutoCAD 2010. 2. Graf J.: AutoCAD 14PL Ćwiczenia. Mikom 1998. 3. Kłosowski P., Grabowska
Bardziej szczegółowoPrzykładowa dostępna aplikacja w Visual Studio - krok po kroku
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoAplikacje w Javie wykład 12 Programowanie GUI
Aplikacje w Javie wykład 12 1 Programowanie GUI Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ C.
Bardziej szczegółowoZaawansowane aplikacje internetowe - laboratorium Web Services (część 1).
Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię usług sieciowych (ang. Web Services).
Bardziej szczegółowoProgramowanie w języku Java WYKŁAD
Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 05.05.2014 WYKŁAD 11 GUI w Swing cz. 1 Wykład
Bardziej szczegółowoProgramowanie w języku Java
Programowanie w języku Java Wykład 9: JFC/Swing projektowanie GUI Widok komponentów Java (Metal) MS Windows OSF/Motif GTK+ Programowanie w języku Java 2 1 Komponenty (1) Kontenery główne: JApplet JDialog
Bardziej szczegółowoGUI - projektowanie interfejsów cz. II
Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 3 Elementy Swing wszystkie elementy graficzne (przyciski, kontrolki) rysowane są od zera z poziomu Javy; ten sam wygląd i zachowanie
Bardziej szczegółowoPodstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1
z wykorzystaniem języka Java ME ćwiczenia 1 Budowa aplikacji MIDP utworzenie klasy dziedziczącej z klasy java.microedition.midlet.midlet Klasa musi posiadać przynajmniej trzy metody: startapp() inicjalizacja
Bardziej szczegółowoĆwiczenia 9 - Swing - część 1
Ćwiczenia 9 - Swing - część 1 Utwórz nowy projekt wybierając: File->New Project->Java Application, przy czym odznacz opcję Create Main Class. Kliknij prawym przyciskiem myszy na podfolder Source Packages
Bardziej szczegółowoMultimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Bardziej szczegółowoKaŜdy z formularzy naleŝy podpiąć do usługi. Nazwa usługi moŝe pokrywać się z nazwą formularza, nie jest to jednak konieczne.
Dodawanie i poprawa wzorców formularza i wydruku moŝliwa jest przez osoby mające nadane odpowiednie uprawnienia w module Amin (Bazy/ Wzorce formularzy i Bazy/ Wzorce wydruków). Wzorce formularzy i wydruków
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Graficzny Interfejs Użytkownika mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Spis treści Graficzny Interfejs
Bardziej szczegółowoKierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa
Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5 Ćwiczenie 5 Aplikacja wielo-okienkowa 1. Opracuj aplikację realizującą obliczenia na podstawie danych wpisywanych w komponencie
Bardziej szczegółowoWykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Bardziej szczegółowoJAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009
JAVA CZ.2 Programowanie obiektowe Przygotowanie projektu aplikacji 1. File >New Project 2. Z listy Categories z panelu Projects wybieramy Java Application. Nasz wybór zatwierdzamy przyciskiem Next. 3.
Bardziej szczegółowoAplikacja wielow tkowa prosty komunikator
Aplikacja wielow tkowa prosty komunikator Klient 0 (host 1) W tek 0 Komponent serwera W tek pochodny 3.1 Klient 1 (host 2) W tek 1 Komponent serwera W tek pochodny 3.2 Host 4 Serwer W tek 3 Klient 2 (host
Bardziej szczegółowoProgramowanie Multimediów. Programowanie Multimediów JAVA. programowanie GUI. (AWT i Swing) [1]
[1] JAVA programowanie GUI (AWT i Swing) [2] Wprowadzenie Pierwotnym GUI dla Javy był AWT (Abstract Window Toolkit) wg legendy powstał w miesiąc... Swing dodano dopiero w wersji Javy 1.2 (przełom 1997/98)
Bardziej szczegółowoC-geo definicja/edycja obiektów, zapis danych w formacie shape
C-geo definicja/edycja obiektów, zapis danych w formacie shape 1. ZałoŜenie projektu i tabeli. Aby rozpocząć pracę przy aktualizacji mapy zasadniczej, naleŝy załoŝyć nowy projekt, w nim nową tabelę roboczą,
Bardziej szczegółowoWykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
Bardziej szczegółowoWykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy.
Wykład 4_1 Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Przykład 1 a) Program ProstyAplet2.class uruchomiony jako aplet w przeglądarce (appletviewer)
Bardziej szczegółowoPWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub
PWSG Ćwiczenia 12 Wszystkie ukończone zadania należy wysłać na adres: sara.m.jurczyk@gmail.com lub sarajurczyk@kul.lublin.pl Zadanie 1: Różnica między zwykłymi polami/metodami, a polami/metodami static
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoSposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Bardziej szczegółowo- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Bardziej szczegółowoJęzyk Java część 2 (przykładowa aplikacja)
Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa
Bardziej szczegółowoI Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu
I Tworzenie prezentacji za pomocą szablonu w programie Power-Point 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu 2. Po wybraniu szablonu ukaŝe się nam ekran jak poniŝej 3. Następnie
Bardziej szczegółowoArchitektura interfejsu użytkownika
Uniwersytet Jagielloński Interfejsy graficzne Wykład 3 Architektura interfejsu użytkownika Barbara Strug 2011 Hall of shame Hall of Shame Hall of Fame O czym dzisiaj Model Widok- Kontroler Hierarchia widoków
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowo1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);
1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania
Bardziej szczegółowoJęzyk JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa
Bardziej szczegółowoProjekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31
Strona: 1 z 31 Explorer Analyzer 1 Uruchamianie programu i raportu PoniŜsze czynności uruchamiają program Bex Analyzer oraz wybrany raport z hurtowni danych. 1. uruchom z menu Start>Programy>Business Explorer>Analyzer
Bardziej szczegółowoZa pomocą atrybutu ROWS moŝemy dokonać podziału ekranu w poziomie. Odpowiedni kod powinien wyglądać następująco:
1 1. Ramki Najbardziej elastycznym sposobem budowania stron jest uŝycie ramek. Ułatwiają one nawigowanie w wielostronicowych dokumentach HTML, poprzez podział ekranu na kilka obszarów. KaŜdy z nich zawiera
Bardziej szczegółowoBudowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)
Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików
Bardziej szczegółowoBezpieczne uruchamianie apletów wg
Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,
Bardziej szczegółowoDodawanie grafiki i obiektów
Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 5, część 3 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa zdarzeń
Bardziej szczegółowoInterfejsy i klasy wewnętrzne
Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw
Bardziej szczegółowoGEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla administratora systemu Warszawa 2007
GEO-SYSTEM Sp. z o.o. 02-732 Warszawa, ul. Podbipięty 34 m. 7, tel./fax 847-35-80, 853-31-15 http:\\www.geo-system.com.pl e-mail:geo-system@geo-system.com.pl GEO-RCiWN Rejestr Cen i Wartości Nieruchomości
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoPodstawowe informacje o apletach
Podstawowe informacje o apletach 1 Co to są aplety? Aplety (ang. applets) są to programy napisane w Javie i uruchamiane w przeglądarce WWW po stronie klienta. Posiadają następujące cechy: wymagają obecności
Bardziej szczegółowoKadry Optivum, Płace Optivum
Kadry Optivum, Płace Optivum Jak seryjnie przygotować wykazy absencji pracowników? W celu przygotowania pism zawierających wykazy nieobecności pracowników skorzystamy z mechanizmu Nowe wydruki seryjne.
Bardziej szczegółowoJava Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie
Java Foundation Clases Tworzenie graficznych interfejsów użytkownika (GUI) w Javie Jacek Starzyński, IETiSIP PW, 2006 Tematyka: Co to jest JFC? Swing zadania i struktura Szkielet programu Model zdarzeń
Bardziej szczegółowoLaboratorium 7 Blog: dodawanie i edycja wpisów
Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowo1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)
Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie
Bardziej szczegółowoProgramowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1
1 Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/
Bardziej szczegółowoInterfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Bardziej szczegółowoProgramowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Bardziej szczegółowoProjektowanie aplikacji internetowych laboratorium
Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji
Bardziej szczegółowoInterfejsy w Java. Przetwarzanie równoległe. Wątki.
Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja
Bardziej szczegółowoOficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM
Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM Opis użytkowy aplikacji ebookreader Przegląd interfejsu użytkownika a. Okno książki. Wyświetla treść książki podzieloną na strony. Po prawej stronie
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium JavaServer Faces Celem ćwiczenia jest przygotowanie aplikacji internetowej z wykorzystaniem technologii JSF. Prezentowane ćwiczenia zostały wykonane w środowisku Oracle JDeveloper
Bardziej szczegółowoSystem imed24 Instrukcja Moduł Analizy i raporty
System imed24 Instrukcja Moduł Analizy i raporty Instrukcja obowiązująca do wersji 1.8.0 Spis treści 1. Moduł Analizy i Raporty... 3 1.1. Okno główne modułu Analizy i raporty... 3 1.1.1. Lista szablonów
Bardziej szczegółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Bardziej szczegółowoTworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class
Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class Mamy Prawym przyciskiem na default packeges I wybieramy New JFrame. Teraz pamiętajmy o podaniu jakiejś
Bardziej szczegółowoZaawansowane programowanie obiektowe. Wykład 3 część 2
Zaawansowane programowanie obiektowe Wykład 3 część 2 Środowisko Eclipse Tworzenie projektu File New project Java project Dodanie klasy File New Class Praca w Eclipse Przykład 1 import java.awt.*; public
Bardziej szczegółowo