Swing ćwiczenia 2 opis

Podobne dokumenty
Ćwiczenia 9 - Swing - część 1

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Edytor tekstu OpenOffice Writer Podstawy

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Klasy i obiekty cz II

Podstawy JavaScript ćwiczenia

Programowanie obiektowe

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

Programowanie Obiektowe GUI

Zasady programowania Dokumentacja

Unity 3D - podpowiedzi w grze. System cząstek

Aplikacje w środowisku Java

Czytnik kart pamięci 8w1, Conrad USB 2.0 Instrukcja obsługi

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

akademia androida Składowanie danych część VI

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Jak przygotować pokaz album w Logomocji

Leszek Stasiak Zastosowanie technologii LINQ w

Podstawy i języki programowania

Makropolecenia w PowerPoint Spis treści

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Java Platform Micro Edition

Zaawansowane aplikacje WWW - laboratorium

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Ćwiczenie 1 Galeria zdjęć

Informatyka II. Laboratorium Aplikacja okienkowa

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie wielowarstwowe i komponentowe

Metody Metody, parametry, zwracanie wartości

Aplikacje internetowe i rozproszone - laboratorium

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Ms WORD Poziom podstawowy Materiały szkoleniowe

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Dodawanie grafiki i obiektów

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Zasoby. Musimy zaimportować zasoby dla gry z Asset Store

Operacje na Wielu Arkuszach

Diagnoza Szkolna Pearsona. Instrukcja obsługi

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Ćwiczenie 25 Działania matematyczne we Flashu

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

OPERACJE NA PLIKACH I FOLDERACH

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Kontenery i komponenty graficzne

Praca w edytorze WORD

Aplikacja wielowątkowa prosty komunikator

Ćwiczenie 22 Dynamiczne wczytywanie tekstu z pliku.txt

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

5.4. Tworzymy formularze

Ćwiczenie 5 Animacja tekstu

DODAJEMY TREŚĆ DO STRONY

Informatyzacja Przedsiębiorstw

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

DOKUMENTY I GRAFIKI. Zarządzanie zawartością Tworzenie folderu Dodawanie dokumentu / grafiki Wersje plików... 7

Systemy operacyjne na platformach mobilnych

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Wykład 12. Programowanie serwera MS SQL 2005 w C#

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Zdarzenia Zdarzenia onload i onunload

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Aplikacje WWW - laboratorium

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Graphic User Interfaces pakiet Swing

Kopiowanie, przenoszenie plików i folderów

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa TECHNIKI REGULACJI AUTOMATYCZNEJ

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

CalendarGenerator v0.1 - instrukcja obsługi

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Dodanie nowej formy do projektu polega na:

Programowanie obiektowe

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Baza danych. Program: Access 2007

Unity. Platforma do tworzenia gier dla różnych systemów docelowych, m.in.: Windows, macos, ios, Android, Powstała w 2005 r., obecnie wersja 5.3.

Metodyka wykonania kartogramu z podziałem na klasy wg punktów charakterystycznych wraz z opracowaniem kartogramicznej legendy.

Wprowadzenie do MS Excel

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Laboratorium 10 - Web Services

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Wykład 6 Dziedziczenie cd., pliki

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wprowadzenie do języka Java

Transkrypt:

Swing ćwiczenia 2 opis Zad 1. a) Dołożyliśmy nowy obszar tekstowy JTextArea i w jego właściwości Document ustawiliśmy, że ma wspólny dokument (model-treść) z naszym pierwszym JTextArea. Zauważmy, że wpisując coś do pierwszego pola to samo pojawia się w drugim. Ale jak zrobimy zmianę czcionki w 1-szym, to zmienia się tylko widok. Natomiast załadowanie z pliku metoda write- tworzy nowy dokument. b) Potem oprogramowaliśmy zdarzenie akcji dla checkboxów - bold i italic. Warto sobie zmieniać nazwy tych kontrolek w programie (zakładka Code w properties danej kontrolki), bo potem ciężko pamiętać po numerach Stałe : BOLD- 1, ITALIC- 2 na różnych bitach: old_style Font.BOLD ustawi w starym stylu 1 na ostatnim bicie old_style Font.ITALIC - ustawi w starym stylu 1 na przedostatnim bicie

private void jmenuitemboldactionperformed(java.awt.event.actionevent evt) { int old_style = jtextarea1.getfont().getstyle();//stary styl //metoda derivefont- tworzy nowa czcionka jtextarea1.setfont(jtextarea1.getfont().derivefont(jmenuitembold.isse lected()? old_style Font.BOLD : old_style & ~Font.BOLD)); private void jmenuitemitalicactionperformed(java.awt.event.actionevent evt) { int old_style = jtextarea1.getfont().getstyle(); jtextarea1.setfont(jtextarea1.getfont().derivefont(jmenuitemitalic.is Selected()? old_style Font.ITALIC : old_style & ~Font.ITALIC)); c) Oprogramowaliśmy zdarzenie dla menuitem: Otwórz, Zapisz: Używamy JFileChooser. Pamiętajcie aby sami nie pisać try-catch tylko napisać : jtextarea1.write(new FileWriter(fch.getSelectedFile())); a NetBeans sam zaproponuje try-catch private void jmenuitemzapiszactionperformed(java.awt.event.actionevent evt) {

JFileChooser fch = new JFileChooser(); if (fch.showsavedialog(null) == JFileChooser.APPROVE_OPTION) { try { /* public void write(writer out) throws IOException Stores the contents of the model into the given stream. By default this will store the model as plain text. */ jtextarea1.write(new FileWriter(fch.getSelectedFile())); catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); private void jmenuitemotworzactionperformed(java.awt.event.actionevent evt) { JFileChooser fch = new JFileChooser(); if (fch.showopendialog(null) == JFileChooser.APPROVE_OPTION) { try { /* public void read(reader in, Object desc) throws IOException Initializes from a stream. This creates a model of the type appropriate for the component and initializes the model from the stream. By default this will load the model as plain text. Previous contents of the model are discarded. */ jtextarea1.read(new FileReader(fch.getSelectedFile()), null); catch (IOException ex) {

Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); Zad 2. Kalkulator można pisać samemu z palca, można korzystając z udogodnień NetBeans a) Tworzymy projekt (odznaczamy main()), dodajemy do default package nową formatkę (okno, ramkę) New JFrame, przy czym pamiętamy o dodaniu nazwy pakietu. (Dla zapominalskich stajemy potem na projekcie, dodajemy nowy pakiet i przeciągamy do niego nasza formatkę.) b) Ustawiamy w naszym JFrame rozkład brzegowy prawym przyciskiem mysz- menu podręczne- setlayout->borderlayout c) Na północy dodajemy przycisk d) To będzie nasz wyświetlacz. Text przycisku ustawiamy na 0 i justujemy do prawej horizontalaligment- RIGHT-, czynimy go nieaktywnym odznaczamy opcję enabled i nazywamy do display (zakładka Code): e) Poniżej przycisku dodajemy panel i ustawiamy na nim rozkład siatkowy GridLayout 4x4.

f) Dodajemy 16 przycisków i ustawiamy ich teksty jak na rysunku: g) Jeśli jest za mały to ustawcie rozmiar ramki na np. 500x600 h) Teraz powiększymy czcionkę na przyciskach, aby nie robić tego dla każdego przycisku to np.: Ustawmy czcionkę w oknie jframe, a potem zaznaczymy wszystkie przyciski (z Shift lub Ctrl) i ustawimy im wspólnie czcionkę jak w jframe: klikamy na własność Font.

i) W końcu możemy zacząć oprogramowywać nasz kalkulator. Zauważmy, że mamy dwa typy przycisków: cyferki i kropke, po których wciśnięciu mają się pojawić na przycisku display oraz przyciski operacji. Tu nam NetBeans trochę przeszkadza, bo nie pozwala pisać np. 2-ch typów wewnętrznych klas nasłuchujących, ale możemy użyć akcji. Akcje mają dużo większe możliwości niż zdarzenie- bo nie tylko mówią co robić w reakcji na zdarzenie ale i mogą ustawiać pewne właściwości (wykład), u nas nie ma takiej potrzeby, nam chodzi tylko o wspólna reakcję na zdarzenie: Dlatego najpierw kilka zmiennych, a potem nasze akcje: private double result = 0;//zmienna na wynik dzialania private String lastcommand = "="; private boolean start = true; /** * Ta akcja wstawia łańcuch akcji przycisku na końcu tekstu do wyświetlenia. */ private Action insertaction = new AbstractAction() { @Override public void actionperformed(actionevent e) { //pobieramy Tekst z przycisku String input = e.getactioncommand(); if (start) { //zaczynamy display.settext("");//nie było jeszcze zadnego tekstu start = false; else { //sparwdzamy czy ktos nie dadaje drugiej. if (".".equals(input) && display.gettext().contains(".")) {

return; //wówczas przerywamy tę akcję //pobieramy to co było i dostawiamy nowy znak display.settext(display.gettext() + input); ; /** * Ta akcja wykonuje polecenia określone przez akcję przycisku. */ private Action commandaction = new AbstractAction() { @Override public void actionperformed(actionevent e) { //pobieramy Tekst z przycisku String command = e.getactioncommand(); if (start) { //jesli zaczynamy to pierwszy oznacza liczbe ujemna //i musimy go wyświetlić na display if (command.equals("-")) { display.settext(command); start = false; else { //ktos na poczatku podal komende to nie robimy nic, // zapisujemy ja w lastcommand albo return; lastcommand = command; else {//bedziemy probowac liczyc wartosc //try-catch piszemy sami bo wyjątek wyrzucany //przez parsedouble nie jest kontrolowany //a może ktoś podać tylko. zamiast liczby try { //obliczamy przy pomocy metody pomocniczej calculate //dostaje ona ostatnio pobrana liczbe calculate(double.parsedouble(display.gettext())); lastcommand = command; start = true; catch (NumberFormatException exc) { ; /** * Wykonuje oczekujące działania. * * @param x wartość, która ma być połączona z poprzednim wynikiem.

*/ public void calculate(double x) { if (lastcommand.equals("+")) { result += x; else if (lastcommand.equals("-")) { result -= x; else if (lastcommand.equals("*")) { result *= x; else if (lastcommand.equals("/")) { result /= x; else if (lastcommand.equals("=")) { result = x; display.settext("" + result); Np.2+3= Najpierw podajemy 2, potem + Wchodzimy do calculate i lastcommand = "="; Zatem result =2, Po wykonaniu calculate dopiero : lastcommand = "+"; Potem podajemy 3 i = wtedy znow wchodzimy do calculate i lastcommand = "+"; Zatem do result=2 dodajemy 3 i wyświetlamy 5 A lastcommand = "="; Zatem kolejne obliczenia zaczna się od tej wartości j) Pozostało tylko przypisać akcje przyciskom: zaznaczamy pierwszą grupę i klikamy właściwość Action, wybieramy custom code i wpisujemy nazwę naszej akcji, to samo dla operacji (+-*/=) k) Można jeszcze się bawić w /0 i 0/0 u nas teraz mamy Infinity i NaN- bo zawsze robimy parsedouble i dzialmy na rzeczywistych (dla całkowitych rzucałoby wyjątkami)