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

Podobne dokumenty
POLIMORFIZM, INTERFEJSY, PROGRAMOWANIE ZDARZENIOWE

Programowanie graficznych interfejsów użytkownika

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

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

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

Programowanie zdarzeniowe

Programowanie graficznych interfejsów uŝytkownika

Kontenery i komponenty graficzne

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

Java biblioteka Swing

Aplikacja wielowątkowa prosty komunikator

Programowanie zdarzeniowe

Obsługa zdarzeń. Wykład 4

Aplikacja wielow tkowa prosty komunikator

Podstawowe informacje o apletach

LABORATORIUM 7 Cel: 1_1

Iteracyjno-rozwojowy cykl oprogramowania 4

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

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Graphic User Interfaces pakiet Swing

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

Java - interfejs graficzny

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

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

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

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

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

Wykład 12: Obsługa Zdarzeń

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

Podstawy Języka Java

Programowanie obiektowe

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

Interfejs graczny w Javie.

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

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

SWING. dr Jarosław Skaruz

Programowanie w języku Java WYKŁAD

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

GUI - projektowanie interfejsów cz. II

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

Comparable<Klasa_uzytkownika>

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

Tworzenie elementów graficznych

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

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

Programowanie komponentowe

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

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

Programowanie zdarzeniowe

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Programowanie Obiektowe Java

Programowanie obiektowe

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

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

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

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

Dokumentacja do API Javy.

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

Scenariusz Lekcji. Część organizacyjna:

Multimedia JAVA. Historia

Dodanie nowej formy do projektu polega na:

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

Aplikacje w środowisku Java

Programowanie Obiektowe GUI

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe zastosowanie języka Java SE

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

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

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

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

Projektowanie aplikacji internetowych laboratorium

Przykładowe roz wiązanie:

Aplikacje w środowisku Java

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

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

Laboratorium 7 Blog: dodawanie i edycja wpisów

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

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

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

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Podstawy Języka Java

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Wprowadzenie do projektu QualitySpy

Ćwiczenia 9 - Swing - część 1

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Bezpieczne uruchamianie apletów wg

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

1 Atrybuty i metody klasowe

Galileo v10 pierwszy program

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

1. Przypisy, indeks i spisy.

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

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Klasy abstrakcyjne i interfejsy

Transkrypt:

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 klasie JWindow) public class Prosta_Aplikacja2 extends JFrame { //... Wywołania konstruktora klasy bazowej dla zapewnienia poprawnej inicjalizacji obiektu dziedziczącego po JFrame: super (dwa konstruktory: JFrame()- okno nie posiada wtedy tytułu (tego konstruktora nie trzeba jawnie wywoływać) JFrame(String) wywołany jako super( Napis ) wywołany celowo przez programistę i okno posiada wtedy tytuł podany w parametrze konstruktora Ustawienia rozmiaru okna ramki w pikselach za pomocą metody setsize Obsługa zamykania okna Wyświetlenie ramki na ekranie metodą setvisible(true) Ramka posiada przyciski Minimalizuj, Maksymalizuj oraz Zamknij zlokalizowane na pasku tytułu. W przypadku Javy domyślne zamknięcie ramki nie powoduje zamknięcia aplikacji. Aby to zmienić, naleŝy wywołać metodę setdefaultcloseoperation zawierającą jeden z czterech parametrów wywołania: EXIT_ON_CLOSE zamyka aplikacje po zamknięciu ramki DISPOSE_ON_CLOSE zamyka ramkę, usuwa obiekt reprezentujący ramkę, ale pozostawia pracującą aplikację, DO_NOTHING_ON_CLOSE pozostawia ramkę otwartą i kontynuuje pracę aplikacji HIDE_ON_CLOSE zamyka ramkę pozostawiając pracującą aplikację. public class Prosta_Aplikacja1 extends JFrame { public Prosta_Aplikacja1() { super("ramka 1");// wywołanie dziedziczonego konstruktora i podanie tytułu okna setsize(250,50); //rozmiar okna w pikselach setdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); //wyświetlenie okna public static void main(string[] arg) { Prosta_Aplikacja1 pr= new Prosta_Aplikacja1();

1.2. Zamykanie okna aplikacji za pomocą bezpośredniej obsługi zdarzenia zamykania okna (zamiast wykorzystania metody setdefaultcloseoperation) Czynności: Utworzyć obiekt, który będzie monitorował stan okna Implementować za pomocą klasy JFrame interfejs WindowsListener, który będzie obsługiwał wszystkie moŝliwe zmiany stanu okna za pomocą implementowanych metod windowclosed() okno jest zamknięte windowclosing() okno jest zamykane windowopen() okno jest widoczne windowiconified() okno zminimalizowane windowdeiconified() okno zmaksymalizowane windowactivated() okno powiązane z tym obiektem staje się aktywne i moŝe przyjmować dane z klawiatury windowdeactivated() - okno powiązane z tym obiektem staje się nieaktywne i nie moŝe przyjmować dane z klawiatury lub wykorzystać klasę WindowAdapter z pakietu awt, która ma zaimplementowane metody interfejsu WindowListener. NaleŜy wykonać klasę dziedziczącą po WindowAdapter przedefiniowując wybraną metodę wg następującego przykładu import java.awt.*; import java.awt.event.*; import javax.swing.*; class Zamykanie_Aplikacji extends WindowAdapter { public void windowclosing (WindowEvent e) { System.exit(0); public class Prosta_Aplikacja2 extends JFrame { public Prosta_Aplikacja2() { super ("Ramka 2"); setsize(250,50); Zamykanie_Aplikacji wyjscie = new Zamykanie_Aplikacji(); addwindowlistener(wyjscie); //wstawienie obiektu monitorującego zamykanie okna wyjscie do aplikacji public static void main (String[] arg) { Prosta_Aplikacja2 p2= new Prosta_Aplikacja2(); p2.setvisible(true); //wyświetlenie aplikacji

2. Obsługa zdarzeń Jest to reakcja na działania uŝytkownika programu. Obsługa zdarzeń realizowana jest za pomocą implementowania interfejsów, zwanych zarządcami zdarzeń. Interfejsy- zarządcy obsługi zdarzeń ActionListener obsługuje zdarzenia generowane przez uŝytkownika na rzecz danego składnika interfejsu (Np. kliknięcie przycisku) AdjustmentListener obsługuje zdarzenie jako zmianę stanu składnika (np. przesuwanie suwaka w polu tekstowym) FocusListener obsługuje zdarzenie od przejścia składnika w stan nieaktywny ItemListener - obsługuje zdarzenie od np. zaznaczenia pola wyboru KeyListener - obsługuje zdarzenie np. od wpisywania tekstu z klawiatury MouseListener - obsługuje zdarzenie od naciśnięcia klawiszy myszy MouseMotionListener - obsługuje zdarzenie od przesuwania wskaźnika myszy nad danym składnikiem WindowListener - obsługuje zdarzenie od okna np. minimalizacja, maksymalizacja, przesunięcie, zamknięcie Wiązanie składnika z obsługą zdarzeń Aby powiązać składnik interfesju z odpowiednim zarządcą zdarzeń, naleŝy wykorzystać następujące metody: addactionlistener() dla JButton, JCheckBox, JComboBox, JTextField, JRadioButton addadjustmentlistene() dla JScroolBar addfocuslistener() dla wszystkich składników pakietu Swing additemlistener() dla JButton, JCheckBox, JComboBox, JTextField, JRadioButton addkeylistener() dla wszystkich składników pakietu Swing addmouselistener() dla wszystkich składników pakietu Swing addmousemotionlistener() wszystkich składników pakietu Swing addwindowlistener() wszystkich obiektów typu JFrame oraz JWindow Metody te muszą być zastosowane przed wstawieniem składnika do obiektu typu JPanel. Metody obsługujące zdarzenia Kiedy dana klasa implementuje interfejs, musi ona obsługiwać zdarzenia za pomocą metody, która jest wtedy wywoływana automatycznie, natomiast w programie trzeba ją odpowiednio przedefiniować, realizując sposób obsługi zdarzeń.

Interfes ActionListener public void actionperformed (ActionEvent evt) { //kod obsługi zdarzeń Interfes AjustmentListener public void adjustmentvaluechange (AdjustmentEvent evt) {/*kod obsługi zdarzeń*/ Interfes FocusListener public void focusgained (FocusEvent evt) { //kod obsługi zdarzeń public void focuslost (FocusEvent evt) { //kod obsługi zdarzeń Interfes ItemListener public void itemstatechange (ItemEvent evt) { //kod obsługi zdarzeń Interfes KeyListener public void keypressed (KeyEvent evt) { //kod obsługi zdarzeń public void keyreleased (KeyEvent evt) { //kod obsługi zdarzeń public void keytyped (KeyEvent evt) { //kod obsługi zdarzeń Interfes MouseListener public void mouseclicked (MouseEvent evt) { //kod obsługi zdarzeń public void mouseentered (MouseEvent evt) { //kod obsługi zdarzeń public void mouseexited (MouseEvent evt) { //kod obsługi zdarzeń public void mousepressed (MouseEvent evt) { //kod obsługi zdarzeń public void mousereleased (MouseEvent evt) { //kod obsługi zdarzeń Interfes MouseMotionListener public void mousedragged (MouseEvent evt) { //kod obsługi zdarzeń public void mousemoved (MouseEvent evt) { //kod obsługi zdarzeń Interfes WindowListener public void windowactivated (WindowEvent evt) { //kod obsługi zdarzeń public void windowclosed (WindowEvent evt) { //kod obsługi zdarzeń public void windowclosing (WindowEvent evt) { //kod obsługi zdarzeń public void windowdeactivated (WindowEvent evt) { //kod obsługi zdarzeń public void windowdeiconfied (WindowEvent evt) { //kod obsługi zdarzeń public void windowiconfied (WindowEvent evt) { //kod obsługi zdarzeń public void windowopened (WindowEvent evt) { //kod obsługi zdarzeń

3. Tworzenie składników interfejsu uŝytkownika Dowolny składnik musi być dodany do kontenera (panel-obiekt klasy JPanel) za pomocą jego metody panel.add(skladnik), i po wywołaniu metody setcontentpane(panel) wyświetlony na ekranie po wyświetleniu kontenera. Obsługa zdarzenia typu Action (JButton, JCheckBox, JComboBox, JTextField, JRadioButtion): naciśnięcie klawisza i wyświetlenie napisu w polu tekstowym. Przyciski typu JButton, etykiety Jlabel oraz pola tekstowe JTextField, zdarzenia typu ActionEvent Konstruktory: JButton(String) - przycisk z etykietą tekstową JButton(Icon) - przycisk w postaci ikony graficznej JButton(String, Icon) tworzy przycisk z etykietą tekstową i ikoną Przycisk typu JButton po naciśnięciu Etykiety JLabel Przyciski typu JButton Pola tekstowe JTextField import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; class Zamykanie_Aplikacji extends WindowAdapter { public void windowclosing (WindowEvent e) { System.exit(0); class Dane { String opinia1,opinia2,opinia3; Dane() { opinia1=opinia2=opinia3=null; public class Prosta_Aplikacja3 extends JFrame implements ActionListener { ImageIcon o1=new ImageIcon ("comp.blue.gif"); JButton weopinia1 = new JButton ("Obsluga komputera", o1); //obiekty-przyciski JButton weopinia2 = new JButton("Jezyk angielski"); JButton weopinia3 = new JButton("Jezyk niemiecki"); // do wprowadzania danych JTextField wyopinia1=new JTextField(30); //obiekty do wyświetlania danych JTextField wyopinia2=new JTextField(30); // na ekranie typu JTextField JTextField wyopinia3=new JTextField(30); Dane dana = new Dane(); //obiekt do zapamiętania danych wprowadzonych //typu JRadioButton

public Prosta_Aplikacja3() { super("ramka 3"); setsize(450,160); JPanel panel=new JPanel(); //utworzenie panela ramki czyli jej kontenera weopinia1.addactionlistener(this); //this-obiekt monitorujący zdarzenie typu Action weopinia2.addactionlistener(this); //obiekty do wprowadzania danych weopinia3.addactionlistener(this); // typu JRadioButton odbierają zdarzenia panel.add(weopinia1); panel.add(weopinia2); panel.add(weopinia3); //wstawianie obiektów typu JRadioButton //do kontenera //tworzenie etykiety dla pola tekstowego JLabel eopinia1= new JLabel(" Opinia 1",SwingConstants.RIGHT); panel.add(eopinia1); //wstawianie etykiety i panel.add(wyopinia1); JLabel eopinia2= new JLabel(" Opinia 2",SwingConstants.RIGHT); panel.add(eopinia2); panel.add(wyopinia2); JLabel eopinia3= new JLabel(" Opinia 3",SwingConstants.RIGHT); panel.add(eopinia3); panel.add(wyopinia3); Zamykanie_Aplikacji wyjscie = new Zamykanie_Aplikacji(); addwindowlistener(wyjscie); setcontentpane(panel); //pola tekstowego do wyświetlania do kontenera public void actionperformed (ActionEvent evt) //metoda obsługująca zdarzenie Action { Object zrodlo = evt.getsource(); if (zrodlo==weopinia1) //jeśli naciśnięto przycisk Obsługa komputera dana.opinia1= new String("Znajomosc obslugi komputera"); else if (zrodlo==weopinia2) //jeśli naciśnięto przycisk Język angielski dana.opinia2= new String("Znajomosc jezyka angielskiego"); else if (zrodlo==weopinia3) //jeśli naciśnięto przycisk Język niemiecki dana.opinia3= new String("Znajomosc jezyka niemieckiego"); wyopinia1.settext(dana.opinia1); //przekazanie tekstu związanego z naciśniętymi klawiszami wyopinia2.settext(dana.opinia2); // do składników tekstowych JTextField, wyopinia3.settext(dana.opinia3); // które zastosowano do wyświetlenia tekstu repaint(); public static void main(string[] arg) throws Exception { Prosta_Aplikacja3 pr= new Prosta_Aplikacja3(); pr.setvisible(true); //wyświetlenie okna

Obszary tekstowe JtextArea, zdarzenia typu FocusEvent Obszar tekstowy JTextField do wprowadzania danych reagujący na stan aktywny innego składnika np. kliknięcie myszą innego składnika powoduje wyświertlenie tekstu w składniku wyjściowym Wy:Nazwa Obszar tekstowy JTextArea do wprowadzania danych reagujący na stan aktywny innego składnika np. kliknięcie myszą innego składnika powoduje wyświertlenie tekstu w składniku wyjściowym Wy:Komentarz Obszar tekstowy JTextField do wyświetlania danych wprowadzonych w polu We:Komentarz import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; Obszar tekstowy JTextArea do wyświetlania danych wprowadzonych w polu We:Komentarz class Zamykanie_Aplikacji extends WindowAdapter { public void windowclosing (WindowEvent e) { System.exit(0); class Dane { String nazwa,komentarz; Dane() { nazwa=komentarz=null; public class Prosta_Aplikacja4 extends JFrame implements FocusListener { JTextField wynazwa=new JTextField(20); //składniki do wprowadzania danych JTextArea wykomentarz=new JTextArea(4,18); //JTextField oraz JTextArea Dane dana = new Dane(); //dane aplikacji JTextField nazwa = new JTextField(20); //składniki do wprowadzania danych JTextArea komentarz = new JTextArea (4,18); //JTextField oraz JTextArea

public Prosta_Aplikacja4() { super("ramka 12"); setsize(320,220); JPanel panel=new JPanel(); nazwa.addfocuslistener(this); komentarz.addfocuslistener(this); komentarz.setlinewrap(true); //zawijanie linii w oknie typu JTextArea //przeniesienie do następnej linii ostatniego wyrazu w linii, który się nie mieści komentarz.setwrapstyleword(true); wykomentarz.setlinewrap(true); wykomentarz.setwrapstyleword(true); JLabel etykieta_nazwy1 = new JLabel ("We: Nazwa"); JLabel etykieta_komentarza1 = new JLabel ("We: Komentarz"); panel.add(etykieta_nazwy1); panel.add(nazwa); panel.add(etykieta_komentarza1); panel.add(komentarz); JLabel etykieta_nazwy2 = new JLabel ("Wy: Nazwa"); JLabel etykieta_komentarza2 = new JLabel ("Wy: Komentarz"); panel.add(etykieta_nazwy2); panel.add(wynazwa); panel.add(etykieta_komentarza2); panel.add(wykomentarz); Zamykanie_Aplikacji wyjscie = new Zamykanie_Aplikacji(); addwindowlistener(wyjscie); setcontentpane(panel); public void focuslost(focusevent evt) { Object zrodlo = evt.getsource(); //reakcja składników wejściowych na przejście ze stanu if (zrodlo==nazwa) dana.nazwa= new String(nazwa.getText()); else if(zrodlo==komentarz) dana.komentarz=new String(komentarz.getText()); //wyświetlenie danych aplikacji wynazwa.settext(dana.nazwa); wykomentarz.settext(dana.komentarz); repaint(); // aktywnego w nieaktywny np. kliknięcie innego składnika //zapamiętanie danych aplikacji public void focusgained (FocusEvent evt) { /*metoda implementująca; do obsługi zdarzeń zastosowano jedynie focuslost*/ public static void main(string[] arg) throws Exception { Prosta_Aplikacja4 pr= new Prosta_Aplikacja4(); pr.setvisible(true); //wyświetlenie okna //odświeŝenie widoku okna

Panele przewijane JScroolPane, zdarzenia typu FocusEvent Suwaki skonfigurowane jako: VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_ NEVER import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; class Zamykanie_Aplikacji extends WindowAdapter { public void windowclosing (WindowEvent e) { System.exit(0); class Dane { String nazwa,komentarz; Dane() {nazwa=komentarz=null; public class Prosta_Aplikacja5 extends JFrame implements FocusListener { JTextField wynazwa=new JTextField(20); JTextArea wykomentarz=new JTextArea(4,18); Dane dana = new Dane(); JTextField nazwa = new JTextField(20); JTextArea komentarz = new JTextArea (4,18); public Prosta_Aplikacja5() { super("ramka 5"); setsize(350,250); JPanel panel=new JPanel(); nazwa.addfocuslistener(this); komentarz.addfocuslistener(this); komentarz.setlinewrap(true); komentarz.setwrapstyleword(true); wykomentarz.setlinewrap(true); wykomentarz.setwrapstyleword(true); JLabel etykieta_nazwy1 = new JLabel ("We: Nazwa"); JLabel etykieta_komentarza1 = new JLabel ("We: Komentarz"); panel.add(etykieta_nazwy1); panel.add(nazwa); panel.add(etykieta_komentarza1); panel.add(komentarz);

JScrollPane obszar_przewijany1 = new JScrollPane (komentarz, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_ NEVER); panel.add(obszar_przewijany1); JLabel etykieta_nazwy2 = new JLabel ("Wy: Nazwa"); JLabel etykieta_komentarza2 = new JLabel ("Wy: Komentarz"); panel.add(etykieta_nazwy2); panel.add(wynazwa); panel.add(etykieta_komentarza2); panel.add(wykomentarz); JScrollPane obszar_przewijany2 = new JScrollPane (wykomentarz, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_ NEVER); panel.add(obszar_przewijany2); Zamykanie_Aplikacji wyjscie = new Zamykanie_Aplikacji(); addwindowlistener(wyjscie); setcontentpane(panel); public void focuslost(focusevent evt) { Object zrodlo = evt.getsource(); if (zrodlo==nazwa) dana.nazwa= new String(nazwa.getText()); else if (zrodlo==komentarz) dana.komentarz= new String(komentarz.getText()); wynazwa.settext(dana.nazwa); wykomentarz.settext(dana.komentarz); repaint(); public void focusgained (FocusEvent evt) { public static void main(string[] arg) throws Exception { Prosta_Aplikacja5 pr= new Prosta_Aplikacja5(); pr.setvisible(true); Suwaki konfiguruje się za pomocą konstruktora: JScrollPane(Component) tworzy panel przewijany zawierający dany składnik JScrollPane(Component, int, int)-tworzy panel przewijany zawierający dany składnik oraz konfiguruje suwak poziomy i pionowy. Drugi i trzeci parametr to: VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_ NEVER

Przyciski opcji i pola wyboru, zdarzenia typu ActionEvent i KeyEvent import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; class Dane { String opinia1, opinia2,opinia3; Dane() {opinia1=opinia2=opinia3=null; public class Prosta_Aplikacja6 extends JFrame implements KeyListener, ActionListener { JRadioButton[] wybor = new JRadioButton[3]; //lub JCheckBox- obiekty do wprowadzanie danych Dane dana = new Dane(); //dane aplikacji JTextField wyopinie[] = new JTextField[3]; //składniki ITextField do wyświetlania danych public Prosta_Aplikacja6() { super("ramka 6"); setsize(250,160); setdefaultcloseoperation(jframe.exit_on_close); JPanel panel=new JPanel(); wybor[0]=new JRadioButton("T-Tak",true); //lub JCheckBox wybor[1]=new JRadioButton("N-Nie"); //lub JCheckBox wybor[2]=new JRadioButton("B-Brak zdania"); //lub JCheckBox ButtonGroup wybory = new ButtonGroup(); for (int i=0; i<wybor.length; i++) { wybor[i].addkeylistener(this); //obiekt odbierający zdarzenia od klawiatury wybor[i].addactionlistener(this); //oraz od działań uŝytkownika (np. klikanie myszy) //wstawianie przycisków do kontenera wybory.add(wybor[i]); panel.add(wybor[i]); JLabel eopinie[]= new JLabel [3]; for (int i=0; i<eopinie.length;i++) { eopinie[i]= new JLabel(" Opinia "+i,swingconstants.right); wyopinie[i]= new JTextField(10); // tworzenie pól tekstowych do wyświetlania panel.add(eopinie[i]); panel.add(wyopinie[i]); setcontentpane(panel); //wstawianie etykiet do kontenera //wstawianie pól tekstowych do kontenera

public void keypressed (KeyEvent evt) { char znak=evt.getkeychar(); //reakcja na przycisku na naciśnięcie klawisza if (znak =='t') { wybor[0].setselected(true); //uaktywnienie widoku przycisku po naciśnięciu odpowiadającego klawisza dana.opinia1= "Tak"; //zapamiętanie aktualnych danych - alternatywnych dana.opinia2=dana.opinia3= ""; else if (znak=='n') { wybor[1].setselected(true); dana.opinia2="nie"; dana.opinia1= dana.opinia3= ""; else if (znak=='b') { wybor[2].setselected(true); dana.opinia3= "Brak zdania"; dana.opinia1= dana.opinia2= ""; wyopinie[0].settext(dana.opinia1); //ustawienie pól tekstowych do wyświetlania wyopinie[1].settext(dana.opinia2); //aktualnych danych wyopinie[2].settext(dana.opinia3); repaint(); //odświeŝenie widoku okna public void keyreleased (KeyEvent evt) { public void keytyped (KeyEvent evt) { public void actionperformed (ActionEvent evt) { Object zrodlo=evt.getsource(); //reakcja na przycisku na działanie uŝytkownika if ( zrodlo ==wybor[0]) // (kliknięcie na wybrany przycisk) { dana.opinia1= "Tak"; dana.opinia2= dana.opinia3= ""; else if ( zrodlo ==wybor[1]) { dana.opinia2= "Nie"; dana.opinia1= dana.opinia3= ""; else if ( zrodlo ==wybor[2]) { dana.opinia3= "Brak zdania"; dana.opinia1= dana.opinia2= ""; wyopinie[0].settext(dana.opinia1); wyopinie[1].settext(dana.opinia2); //aktualnych danych wyopinie[2].settext(dana.opinia3); repaint(); //odświeŝenie widoku okna //ustawienie pól tekstowych do wyświetlania public static void main(string[] arg) { Prosta_Aplikacja6 pr= new Prosta_Aplikacja6(); pr.setvisible(true); //wyświetlenie okna

Listy rozwijane, zdarzenia typu ItemEvent, okno typu MessageDialog import javax.swing.*; import java.util.*; import java.io.*; import java.lang.*; import java.awt.event.*; class Zamykanie_Aplikacji extends WindowAdapter { public void windowclosing (WindowEvent e) { System.exit(0); public class Prosta_Aplikacja8 extends JFrame implements ItemListener { JComboBox tytuly = new JComboBox(); //lista rozwijana do wyświetlania wprowadzonych //danych dobranych ze słownika; wykorzystuje się wewnętrzny domyślny pojemnik na pozycje listy Vector dane_slownika= new Vector(); //zewnętrzny pojemnik na pozycje drugiej listy JComboBox slownik = new JComboBox(dane_slownika); // rozwijanej, która pełni rolę Vector dana=new Vector(); //słownika danych //przechowywanie danych w aplikacji

public Prosta_Aplikacja8() { super("ramka 8"); setsize(350,250); JPanel panel=new JPanel(); JLabel etykieta_tytulow = new JLabel("Tytuly"); panel.add(etykieta_tytulow); //wstawienie etykiety dla danych wprowadzanych do listy panel.add(tytuly); // wstawienie listy dla danych wprowadzanych lista posiada // własny pojemnik na pozycje wprowadzane for (int i=0; i<20;i++) dane_slownika.add("tytul"+i); // pozycje listy jako łańcuchy do czytania JLabel etykieta_slownika = new JLabel("Slownik tytulow"); panel.add(etykieta_slownika); slownik.additemlistener(this); panel.add(slownik); Zamykanie_Aplikacji wyjscie = new Zamykanie_Aplikacji(); addwindowlistener(wyjscie); setcontentpane(panel); // pojemnik dane_slownika są wypełniane danymi słownika, czyli stanowią public void itemstatechanged(itemevent evt) { int zrodlo = evt.getstatechange(); //reakcja na wybranie pozycji w liście rozwijanej slownik if (zrodlo==itemevent.selected) { dana.add(evt.getitem()); //zapisanie danych aplikacji do Vectora tytuly.additem(evt.getitem()); //wstawienie danych do listy rozwijanej wyświetlające //dane aplikacji pobrane z listy nieedytowalnej, pełniącej rolę słownika danych repaint(); //odświeŝenie widoku okna void poczatek() //standardowe okienko dialogowe typu MessageDialog {JOptionPane.showMessageDialog( this, "Proby ze standardowymi okienkami dialogowymi", //wyświetlany komunikat "Info", //tytuł okna JOptionPane.INFORMATION_MESSAGE); public static void main(string[] arg) { Prosta_Aplikacja8 pr= new Prosta_Aplikacja8(); pr.poczatek(); pr.setvisible(true); //wyświetlenie okna //składnik nadrzędny okna dialogowego //typ ikony wyświetlanej w okienku (i)