Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Slides:



Advertisements
Similar presentations
Managing Input Events in Swing Week 5 Workshop Lyn Bartram.
Advertisements

Event Handling Feb 14, Event Model Revisited zRecall that a component can fire an event. zEach type of event is defined as a distinct class. zAn.
GUI Tutorial Day 3. Custom Dialog Create, display, hide, retrieve information.
Java GUI Libraries Swing Programming. Swing Components Swing is a collection of libraries that contains primitive widgets or controls used for designing.
© L.Lúcio, An example GUI in Java n Two graphic libraries in Java u AWT u Swing n Swing is more recent than AWT: u Built on top of AWT classes;
Gui Interfaces a la Swing Up to speed with Swing by Steven Gutz is a good source It don’t mean a thing if it ain’t got that swing Duke Ellington.
Events ● Anything that happens in a GUI is an event. For example: – User clicks a button, presses return when typing text, or chooses a menu item ( ActionEvent.
Creating a GUI with Swing. Introduction Very useful link: Swing – is a part of JFC (Java Foundation.
Lecture 19 Graphics User Interfaces (GUIs)
Graphical User Interfaces
Contructing GUI’s in Java Implemented in the Swing API Imported into your programs by: import javax.swing.*; Most Swing programs also need the AWT packages.
Java Swing Chris North cs3724: HCI. AWT to Swing AWT: Abstract Windowing Toolkit import java.awt.* Swing: new with Java2 import javax.swing.* Extends.
Chapter 8: Graphical User Interfaces Objectives - by the end of this chapter, you should be able to do the following: –write a simple graphical user interface.
1 A Quick Java Swing Tutorial. 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library:
Java Swing © Walter Milner 2005: Slide 1 Java Swing Walter Milner.
Introduction to GUI Java offers a great number of pre-defined classes to support the development of graphical user interfaces –These are broken down into.
MIT AITI 2003 Lecture 17. Swing - Part II. The Java Event Model Up until now, we have focused on GUI's to present information (with one exception) Up.
Java GUI CSCE 190 – Java Instructor: Joel Gompert Mon, July 26, 2004.
Java GUIs and Graphics CNS Outline  Introduction  Events  Components  Layout managers  Drawing  Introduction  Events  Components  Layout.
Java GUI building with Swing. 2 AWT (Abstract Window Toolkit) Present in all Java implementations Described in (almost) every Java textbook Adequate for.
Introduction to Swing Components Chapter 14.  Part of the Java Foundation Classes (JFC)  Provides a rich set of GUI components  Used to create a Java.
GUI Chapter 10 Graphics context and objects Creating a window based application JFrame, JTextField, JButton Containers and Controls Graphics commands Layout.
Event Handling Mohanraj S AP / IT Angel College of Engg & Tech.,
Java GUIs and Graphics CNS Outline  Introduction  Events  Components  Layout managers  Drawing  Introduction  Events  Components  Layout.
Swing [part.1] Taken from Water Milner Eriq Muhammad Adams J |
1 CSC111H Graphical User Interfaces (GUIs) Introduction GUIs in Java Understanding Events A Simple Application The Containment Hierarchy Layout Managers.
GUI Clients 1 Enterprise Applications CE00465-M Clients with Graphical User Interfaces.
1 1. About Swing 2. The Applet Framework 3. A first Applet 4. Swing Applications 5. The Swing Event model 6. Containment hierarchies 7. Swing Taxonomy.
CompSci 100E 35.1 Graphical User Interfaces: GUIs  Components  Flat Layouts  Hierarchical Layouts  Designing a GUI  Coding a GUI.
Layout Managers Arranges and lays out the GUI components on a container.
CS Fall 2012, Lab 09 Haohan Zhu. Boston University Slideshow Title Goes Here CS Fall 2012, Lab /20/2015 GUI - Graphical User Interface.
Programming with Java’s Swing API February 4, 2003 CMPS Advanced Programming Graphical User Interfaces.
1 / 67 COP 3503 FALL 2012 SHAYAN JAVED LECTURE 14 Programming Fundamentals using Java 1.
Creating a GUI with JFC/Swing. What are the JFC and Swing? JFC –Java Foundation Classes –a group of features to help people build graphical user interfaces.
CS1054: Lecture 21 - Graphical User Interface. Graphical User Interfaces vs. Text User Interface.
Java GUI. Graphical User Interface (GUI) a list a button a text field a label combo box checkbox.
CS 4244: Internet Programming User Interface Programming in Java 1.0.
CompSci Event Handling. CompSci Event Handling The Plan  Sequential (Single Thread) Model  Event Model  Making the GUI interactive  Examples.
Ch13 Creating windows and applets. Short overview AWT (Abstract Windowing Toolkit) Early Java development used graphic classesEarly Java development used.
GUI DYNAMICS Lecture 11 CS2110 – Fall GUI Statics and GUI Dynamics  Statics: what’s drawn on the screen  Components buttons, labels, lists, sliders,
Swing. Introduction to Swing What is Swing? “ Swing is a diverse collection of lightweight components that can be used to build sophisticated user interfaces.”
Review_6 AWT, Swing, ActionListener, and Graphics.
Chapter 10 - Writing Graphical User Interfaces1 Chapter 10 Writing Graphical User Interfaces.
Swing GUI Components So far, we have written GUI applications which can ‘ draw ’. These applications are simple, yet typical of all Java GUI applications.
Graphical User Interface (GUI)
Java Swing and Events Chris North cs3724: HCI. Presentations nadine edwards, steve terhar Vote: UI Hall of Fame/Shame?
NORĖDAMI PAKEISTI SKAIDRĖS STILIŲ – SPUSTELĖKIT E DEŠINIUOJU PELĖS KLAVIŠU ANT SKAIDRĖS FONO IR PASIRINKITE > LAYOUT ARBA DARBALAUKI O ĮRANKIŲ JUOSTOJE.
1 A Quick Java Swing Tutorial. 2 Introduction Swing – A set of GUI classes –Part of the Java's standard library –Much better than the previous library:
Dept. of CSIE, National University of Tainan 10/21/2012 Responding to User Input.
GUI.1 Graphical User Interfaces GUIs. GUI.2 The Plan Components Flat Layouts Hierarchical Layouts Designing a GUI Coding a GUI.
GUI Programming in Java Hao Jiang Boston College April, 2009.
Chapter 6 Building Java GUIs. MVC Model View Controller The model passes its data to the view for rendering The view determines which events are passed.
Java Swing. Note - this presentation.. often needs to refer to source code which is too big to put on a slide So the source code is in a separate Word.
GUI 1: JFC and Swing Basics OOP tirgul No
Module 13: Swing API Object Oriented Programming(Java)
A Quick Java Swing Tutorial
Graphical User Interfaces
Graphical User Interfaces -- GUIs
Java GUI.
A Quick Java Swing Tutorial
Ellen Walker Hiram College
Swing Advanced HCI (IAT 351)
Course Outcomes of Advanced Java Programming AJP (17625, C603)
תכנות מכוון עצמים בשפת JAVA
INTERAKTYVIŲ UŽDUOČIŲ KŪRIMO PROGRAMA
Daugelio dokumentų sąsaja (angl. Multiple document interface)
Windows Ribbon Framework
Steps to Creating a GUI Interface
A Quick Java Swing Tutorial
Programming Graphical User Interface (GUI)
Presentation transcript:

Vartotojo sąsajos kūrimas, naudojant Java Swing biblioteką

Swing komponentų privalumai lyginant su AWT (1) Parašyti išimtinai Java kodu ir nepriklauso nuo platformos Žymės ir mygtukai be įprasto teksto gali turėti paveikslėlius Daugeliui komponentų galima uždėti ar pakeisti rėmelius http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Swing komponentų privalumai lyginant su AWT (2) Komponentai nebūtinai yra stačiakampės formos (pvz., apvalus mygtukas) Lengvai keičiamas komponentų elgesys ar išvaizda, panaudojant esamus metodus ar juos perdengus http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Galimos problemos Reikia vengti mišraus AWT ir Swing komponentų vartojimo Matomų komponentų modifikavimas atliekamas tik iš įvykius apdorojančios gijos (event-dispatching thread) Swing komponentus reikėtų dėti tik į Swing viršutinio lygio konteinerius (JFrame, JApplet) http://java.sun.com/products/jfc/tsc/articles/mixing/index.html

Pagrindiniai Swing paketai import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; http://java.sun.com/docs/books/tutorial/uiswing/14start/index.html

Swing’o komponentai ir jų turinio hierarchija (1) Viršutinio lygio konteineriai (JFrame, JApplet, JDialog) Tarpiniai konteineriai (JPanel, JScrollPane, JTabbedPane) Atominiai (atomic) komponentai, priimantys informaciją ar išvedantys ją vartotojui http://java.sun.com/docs/books/tutorial/uiswing/components/index.html http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

Swing’o komponentai ir jų turinio hierarchija (2) http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Programos pavyzdys nr.1 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Demo { public static void main(String args[]) { JFrame frame = new JFrame("Demo"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); // tęsinys kitoje skaidrėje

Programos pavyzdys nr.1 JLabel label = new JLabel("Demonstracine programa"); JButton button = new JButton("Mygtukas"); button.setBackground(Color.RED); frame.getContentPane().add(label, BorderLayout.CENTER); frame.getContentPane().add(button, BorderLayout.PAGE_END); frame.setBounds(10, 10, 200, 100); frame.setVisible(true); }

Programos pavyzdys nr.1

Vartotojo sąsajos komponentų išdėstymo būdai Išdėstymo būdas gali būti nustatytas bet kuriam viršutinio lygio konteineriui (pvz., JFrame, JDialog, JApplet, JPanel ir pan.) Išdėstymui nustatyti naudojamas Container klasės metodas: public void setLayout(LayoutManager isdestymoBudas) http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (1) BorderLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (2) FlowLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (3) BoxLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (4) GridLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (5) GridBagLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html

Klasės skirtos nustatyti GUI komponentų išdėstymą (6) SpringLayout http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html

Įvykių apdorojimas (1) Įvykis – tai veiksmas, kurį atlieka vartotojas, dirbdamas su grafine vartotojo sąsaja Kiekvieną įvykį aprašo jam skirtas objektas (pvz., ActionEvent, MouseEvent) Bet kuris Swing komponentas (šaltinis) gali fiksuoti su juo susijusius įvykius http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

Įvykių apdorojimas (2) Bet kuris Swing komponentas gali fiksuoti kelis skirtingo tipo įvykius Bet kuris “įvykio klausytojas” (event listener) gali būti užregistruotas keliems šaltiniams http://java.sun.com/docs/books/tutorial/uiswing/events/index.html

Kai kurių įvykių pavyzdžiai ActionEvent – paspaudžiamas mygtukas, Enter klavišas ar pasirenkamas meniu punktas WindowEvent – vartotojas uždaro programos langą MouseEvent – vartotojas paspaudžia kurį nors pelės klavišą ant komponento MouseMotionEvent – vartotojas užveda kursorių virš komponento http://java.sun.com/docs/books/tutorial/uiswing/events/eventsandcomponents.html http://java.sun.com/docs/books/tutorial/uiswing/events/handling.html

Įvykio apdorojimo realizavimas (1) Įvykį apdorojanti klasė privalo: a) arba pati implementuoti “įvykio klausytojo” interfeisą ir realizuoti visus jo metodus: public class MyListener implements ActionListener { public void actionPerformed(ActionEvent evt) { // atitinkami veiksmai } http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Įvykio apdorojimo realizavimas (2) b) arba paveldėti “klausytojo” interfeisą realizuojančią klasę ir perdengti reikalingus metodus: class MyMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent evt) { // atitinkami veiksmai } http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Įvykio apdorojimo realizavimas (3) Naudojant addXXXListener() metodą, reikiamiems komponentams, užregistruojama įvykį apdorojanti klasė : komponentas.addActionListener(new MyListener()); // variantui a) komponentas.addActionListener(this); // variantui a), kai šaltinis ir apdorojimas vienoje klasėje komponentas.addMouseListener(new MyMouseListener()); // variantui b) http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Anoniminės “įvykio klausytojo” klasės panaudojimas komponentas.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent evt) { // atitinkami veiksmai } }); http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Pastabos dėl įvykių apdorojimo Visi xxxListener interfeisai, turintys daugiau negu vieną metodą, turi specialias juos realizuojančias adapterių klases Įvykių klasės xxxEvent objektas turi metodus papildomai informacijai apie įvykį gauti Visos xxxEvent klasės paveldi ObjectEvent klasę, kurios metodas getSource() gražina įvykio šaltinį http://java.sun.com/docs/books/tutorial/uiswing/events/generalrules.html

Programos pavyzdys nr.2 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Demo { public static void main(String args[]) { JFrame frame = new JFrame("Demo"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); // tęsinys kitoje skaidrėje

Programos pavyzdys nr.2 JButton button = new JButton("Mygtukas"); JLabel label = new JLabel("Demonstracine programa"); JButton button = new JButton("Mygtukas"); button.setBackground(Color.RED); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { JButton b = (JButton) evt.getSource(); if (b.getBackground() == Color.RED) { b.setBackground(Color.GREEN); } else { b.setBackground(Color.RED); } });

Programos pavyzdys nr.2 frame.getContentPane().add(label, BorderLayout.CENTER); frame.getContentPane().add(button, BorderLayout.PAGE_END); frame.setBounds(10, 10, 200, 100); frame.setVisible(true); }

Paišymas Kiekvienas Swing’o komponentas turi metodą paint(Graphics g), skirtą grafiniam to komponento atvaizdavimui Norint savaip atvaizduoti komponentą, reikia perdengti jo metodą paint(Graphics g) arba paintComponent(Graphics g) Komponento perpaišymas atliekamas metodo repaint() pagalba http://java.sun.com/docs/books/tutorial/uiswing/14painting/index.html

Graphics ir Graphics2D objektai Tai objektai, turintys metodus, skirtus paišymui atlikti Saugo einamąjį grafinį kontekstą (pvz., paišymo spalva, šriftas, ploto dydis ir t.t.) http://java.sun.com/docs/books/tutorial/2d/index.html

Graphics ir Graphics2D objektų galimybės Šių objektų pagalba galima atvaizduoti: Įvairias geometrines figūras Tekstą Paveikslėlius http://java.sun.com/docs/books/tutorial/2d/index.html

Swing komponentų koordinačių sistema http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts2.html

Programos pavyzdys nr.3 public class MyPanel extends JPanel { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setBackground(Color.YELLOW); g2.setFont(new Font("Arial", 0, 13)); g2.clearRect(0, 0, getWidth(),getHeight()); g2.setColor(Color.black); g2.drawString("Eilute", 10, 10); }

Programos pavyzdys nr.3

Nuorodos (1) http://java.sun.com/ - pagrindinis Java kūrėjos Sun Microsystems puslapis. Čia rasite visko... http://java.sun.com/docs/books/tutorial/uiswing/index.html - the Java Swing Tutorial. http://java.sun.com/apis.html - the Java API Documentation. http://java.sun.com/docs/books/tutorial/uiswing/components/components.html - Swing komponentų katalogas http://java.sun.com/docs/books/tutorial/uiswing/events/index.html - įvadas į įvykių apdorojimą. http://java.sun.com/docs/books/tutorial/uiswing/events/handling.html - populiariausių įvykius apdorojančių interfeisų realizacijos

Nuorodos (2) http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html - komponentų išdėstymo būdai http://www.javaworld.com/columns/jw-tips-index.shtml - Java tips. http://developer.java.sun.com/developer/JDCTechTips/ - Java Technical Tips