SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty.

Podobne dokumenty
SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe.

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

Kontenery i komponenty graficzne

Aplikacja wielowątkowa prosty komunikator

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

SWING. dr Jarosław Skaruz

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

Java - interfejs graficzny

Programowanie graficznych interfejsów użytkownika

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

Programowanie obiektowe

Programowanie obiektowe

Aplikacja wielow tkowa prosty komunikator

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

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.

Programowanie zdarzeniowe

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Klasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract

Wykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy.

Tworzenie elementów graficznych

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w języku JAVA. Wykład IV Swing - GUI

Bezpieczne uruchamianie apletów wg

Podstawy Języka Java

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Aplikacje w Javie wykład 12 Programowanie GUI

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Tworzenie i obsługa graficznego interfejsu uŝytkownika

9. Swing wprowadzenie

Zaawansowane programowanie obiektowe. Wykład 3 część 2

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

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

KLASY, INTERFEJSY, ITP

Programowanie zdarzeniowe

JAVA I SIECI. MATERIAŁY:

Graphic User Interfaces pakiet Swing

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń

Programowanie obiektowe

Java biblioteka Swing

Java Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie

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

Dokumentacja do API Javy.

Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1

Programowanie w języku Java

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006

package pakieta; import pakietb.b; package pakietb; public class B { B(){} public class A { private B b; A(B b) { this.b = b; } }

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

Obsługa zdarzeń w JAVIE ((ActionListener,ItemListener,TableModelListener))

Połączenia między bazami danych i programem w języku Java część 2

Ćwiczenia 9 - Swing - część 1

Programowanie Obiektowe Java

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie

Swing ćwiczenia 2 opis

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

setdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); } //wyświetlenie okna

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Doskonalsze i nowe komponenty GUI

Aplikacje w Javie wykład 12 Programowanie GUI

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

Przykładowe roz wiązanie:

Aplikacje w środowisku Java

Aplikacje RMI Lab4

Iteracyjno-rozwojowy cykl oprogramowania 4

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Projektowanie aplikacji internetowych laboratorium

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Programowanie Obiektowe GUI

Tworzenie i wykorzystanie usług

Programowanie w języku Java WYKŁAD

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

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

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

1 Atrybuty i metody klasowe

Programowanie graficznych interfejsów uŝytkownika

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Java. Programowanie Obiektowe Mateusz Cicheński

1. Co można powiedzieć o poniższym kodzie?

Aplikacje w Javie- wykład 11 Wątki-podstawy

Java Podstawy. Michał Bereta

Podstawy i języki programowania

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Wprowadzenie do programowania współbieżnego. Grafika, Proste Animacje

Języki i metody programowania Java Obsługa zdarzeń - przykłady

Programowanie obiektowe

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java Platform Micro Edition

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Język Java część 2 (przykładowa aplikacja)

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Transkrypt:

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/ JĘZYK JAVA, FAIS UJ 2016/2017 1

SWING import javax.swing.*; public class HelloWorldSwing { private static void createandshowgui() { // nowe okno o tytule HelloWorldSwing JFrame frame = new JFrame("HelloWorldSwing"); // zamkniecie okna spowoduje zakonczenie programu frame.setdefaultcloseoperation(jframe.exit_on_close); // nowy napis JLabel label = new JLabel("Hello World"); // napis jest dodawany do zawartosci okna frame.getcontentpane().add(label); // dopasowanie rozmiarow okna do umieszczonych w nim komponentow frame.pack(); // wyswietlenie okna frame.setvisible(true); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 2

SWING public static void main(string[] args) { // stworzenie nowego watku, w ktorym zostanie 'uruchomione' okno SwingUtilities.invokeLater(new Runnable() { public void run() { createandshowgui(); ); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 3

KONTENERY Każda aplikacja wykorzystująca Swing używa co najmniej jeden kontener najwyższego poziomu. JFrame, JDialog, JApplet. W takim kontenerze umieszcza się kolejne kontenery lub komponenty: frame.getcontentpane().add(yellowlabel, BorderLayout.CENTER); // A tutaj tworzymy panel (kontener) dodajemy do niego komponenty // a nastepnie umieszczamy go w kontenerze najwyzszego poziomu (frame) JPanel contentpane = new JPanel(new BorderLayout()); contentpane.setborder(someborder); contentpane.add(somecomponent, BorderLayout.CENTER); contentpane.add(anothercomponent, BorderLayout.PAGE_END); frame.getcontentpane().add(contentpane) http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 4

KONTENERY Za rozmieszczenie komponentów w kontenerze odpowiedxzialny jest obiekt typu LayoutManager. Możemy go określić za pomocą metody setlayout(). Domyślnie kontenery używają instancji FlowLayout(), Jeśli chcemy samodzielnie określać pozycje komponentów należy usunąć LayoutManagera: container.setlayout(null). Do kontenerów najwyższego poziomu można także dodać menu: frame.setjmenubar(). http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 5

KOMPONENTY Wszystkie komponenty rozszerzają klasę JComponent. Klasa JComponent implementuje następujące funkcjonalności: podpowiedzi (settooltiptext()), ramki (setborder()), styl (UIManager.setLookAndFeel()), dodatkowe właściwości (setclientproperties()), rozmiary (layout) przystępność (accessibility) przeciągnij i upuść, podwójne buforowanie, wiązanie klawiszy. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 6

KOMPONENTY TEKSTOWE Komponenty tekstowe (JTextComponent) dzielą się na trzy kategorie: http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 7

KOMPONENTY import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.url; import javax.swing.*; public class Browser extends JFrame implements ActionListener { private static final String COMMAND_GO = "go"; private JEditorPane webpage; private JTextField url; private JTextArea htmlpage; private JPanel createmainpanel() { JPanel mp = new JPanel(); // panel z kolumnowym (Y_AXIS) ukladem elementow mp.setlayout(new BoxLayout(mp, BoxLayout.Y_AXIS)); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 8

LAYOUT MANAGER http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 9

KOMPONENTY // panel z domyślnym FlowLayout JPanel p = new JPanel(); this.url = new JTextField(); // sugerowane rozmiary mogą zostać zmienione przez layout // managera this.url.setpreferredsize(new Dimension(500, 20)); this.url.settext("http://www.simongrant.org/web/guide.html"); JLabel l = new JLabel("adres"); // label opisujacy url l.setlabelfor(this.url); // dodajemy do panelu JLabel I JTextField p.add(l); p.add(this.url); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 10

KOMPONENTY // tworzymy przycisk JButton b = new JButton("Go"); b.setactioncommand(command_go); // ktorego akcje beda obslugiwane przez biezacy obiekt // (implementujacy interfejs ActionListener. Akcja produkowana // przez przycisk będzie identyfikowane Stringiem COMMAND_GO b.addactionlistener(this); b.setpreferredsize(new Dimension(100, 40)); // dodanie przycisku do panelu p.add(b); // dodanie panelu p (z komponentami rozmieszczonymi przez // FlowLayout) do panelu, w ktorym obowiazuje BoxLayout mp.add(p); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 11

KOMPONENTY this.webpage = new JEditorPane(); this.htmlpage = new JTextArea(); try { // wczytujemy zawartosc strony startowej this.setpage( new URL("http://www.simongrant.org/web/guide.html")); catch (IOException e) { // Tworzymy panel z zakladkami JTabbedPane tp = new JTabbedPane(); tp.setpreferredsize(new Dimension(600, 400)); // pole tekstowe webpage umieszczamy wewnatrz panela // scrollowanego. Dzieki temu zawartosc okienka bedzie mogla // zajmowac wiecej miejsca niz widok JScrollPane sp = new JScrollPane(this.webpage); // zakladka page bedzie zawierac webpage (wewnatrz JScrollPane) tp.add("page", sp); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 12

KOMPONENTY // zakladka html bedzie zawierac htmlpage (wewnatrz JscrollPane) sp = new JScrollPane(this.htmlPage); tp.add("html", sp); // przygotowany JTabbedPane zostaje dodany do panelu mp mp.add(tp); return mp; private void setpage(url page) throws IOException { String s; this.webpage.setpage(page); BufferedReader br = new BufferedReader(new InputStreamReader( page.openstream())); while ((s = br.readline())!= null) this.htmlpage.append(s + "\n"); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 13

KOMPONENTY public Browser() { // zawsze na początku powinniśmy wywołać konstruktor nadklasy super(); // zawartoscia okna Browser bedzie panel mp this.getcontentpane().add(this.createmainpanel()); public static void createandshow() { Browser b = new Browser(); b.setdefaultcloseoperation(exit_on_close); b.pack(); // okno zostanie umieszczone na srodku ekranu b.setlocationrelativeto(null); b.setvisible(true); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 14

KOMPONENTY // Interfejs ActionListener implementuje jedna metode, ktora jest // uruchamiana gdy nastapi zdarzenie na komponencie nasluchiwanym // przez ten obiekt. Informacje o zrodle akcji sa przekazywane przez // argument ActionEvent @Override public void actionperformed(actionevent e) { if (COMMAND_GO.equals(e.getActionCommand())) { try { // przeladowujemy strone this.setpage(new URL(this.url.getText())); catch (IOException e2) { this.webpage.settext( "Problem z adresem " + this.url.gettext()); this.htmlpage.settext( "Problem z adresem " + this.url.gettext()); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 15

KOMPONENTY // uruchomienie programu public static void main(string[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createandshow(); ); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 16

JFileChooser http://docs.oracle.com/javase/tutorial/uiswing/components/flechooser.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 17

JFileChooser JFileChooser chooser = new JFileChooser(); // filtr plików FileNameExtensionFilter filter = new FileNameExtensionFilter( "Obrazy JPG i GIF", "jpg", "gif"); chooser.setfilefilter(filter); // wyświetlenie okienka int ret = chooser.showopendialog(parent); // Jesli wcisnieto ok lub open if(ret == JFileChooser.APPROVE_OPTION) { System.out.println("Wybrales plik: " + chooser.getselectedfile().getname()); http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 18

JOptionPane http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 19

JOptionPane Object[] possibilities = {"ham", "spam", "yam"; String s = (String)JOptionPane.showInputDialog( frame, "Complete the sentence:\n" + "\"Green eggs and...\"", "Customized Dialog", JOptionPane.PLAIN_MESSAGE, icon, possibilities, // null "ham"); http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#features http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 20

ĆWICZENIA Proszę napisać kalkulator posiadający interfejs grafczny. (łatwiejsza wersja kalkulator działający w oparciu o odwrotną notację polską) Proszę napisać prosty edytor tekstowy umożliwiający tworzenie, odzczytywanie, modyfkację I zapis plików w formacie txt. http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA, FAIS UJ 2016/2017 21

DZIĘKUJĘ ZA UWAGĘ