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

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

Kontenery i komponenty graficzne

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

SWING. dr Jarosław Skaruz

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

Aplikacja wielowątkowa prosty komunikator

Java - interfejs graficzny

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

Programowanie graficznych interfejsów użytkownika

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

Programowanie obiektowe

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

Aplikacja wielow tkowa prosty komunikator

Programowanie obiektowe

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 w Javie Wykład 6 Okienka w Javie (AWT)

Programowanie zdarzeniowe

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

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

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

Aplikacje w Javie wykład 12 Programowanie GUI

Bezpieczne uruchamianie apletów wg

Tworzenie elementów graficznych

Podstawy Języka Java

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

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

Tworzenie i obsługa graficznego interfejsu uŝytkownika

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

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

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

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

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

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

Programowanie zdarzeniowe

Java biblioteka Swing

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

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

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

9. Swing wprowadzenie

JAVA I SIECI. MATERIAŁY:

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

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

Graphic User Interfaces pakiet Swing

Programowanie w języku Java

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

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

Dokumentacja do API Javy.

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

Programowanie Obiektowe Java

Aplikacje w Javie wykład 12 Programowanie GUI

Doskonalsze i nowe komponenty GUI

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

Iteracyjno-rozwojowy cykl oprogramowania 4

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

Aplikacje RMI Lab4

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

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

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

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

Programowanie obiektowe

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

Programowanie graficznych interfejsów uŝytkownika

Aplikacje w środowisku Java

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

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

Przykładowe roz wiązanie:

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

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

Programowanie w języku Java WYKŁAD

Tworzenie i wykorzystanie usług

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

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

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

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

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

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

KLASY, INTERFEJSY, ITP

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

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

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

1 Intefejsy graczne. 1.1 Okienka. 1.2 Komponenty

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

Java Podstawy. Michał Bereta

Java Platform Micro Edition

Projektowanie aplikacji internetowych laboratorium

Java. Programowanie Obiektowe Mateusz Cicheński

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Ćwiczenie 8. Rozległe sieci komputerowe

Wykład 4_2 część druga. Iteracyjno-rozwojowy cykl oprogramowania 4

Java programowanie w sieci. java.net RMI

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Podstawy i języki programowania

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

Programowanie Multimediów. Programowanie Multimediów JAVA. programowanie GUI. (AWT i Swing) [1]

Programowanie w języku Java

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Bartosz Jachnik - Kino

Transkrypt:

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, FAIS UJ 2012/2013 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 2012/2013 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 2012/2013 3

KONTENERY Każda aplikacja wykorzystująca Swing użuwa 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 2012/2013 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 2012/2013 5

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 2012/2013 6

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

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 2012/2013 8

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

// 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 2012/2013 10

// 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 2012/2013 11

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 2012/2013 12

// 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 2012/2013 13

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 2012/2013 14

// 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 2012/2013 15

// 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 2012/2013 16

DZIĘKUJĘ ZA UWAGĘ