Graphical User Interfaces

Slides:



Advertisements
Similar presentations
Graphical User Interfaces
Advertisements

Java Software Development Paradigm Lecture # 12. Basics of GUI.
Graphic User Interfaces Layout Managers Event Handling.
CMSC 341 Building Java GUIs. 09/26/2007 CMSC 341 GUI 2 Why Java GUI Development? Course is about Data Structures, not GUIs. We are giving you the opportunity.
Corresponds with Chapter 12
Java Swing Recitation – 11/(20,21)/2008 CS 180 Department of Computer Science, Purdue University.
Java GUI Libraries Swing Programming. Swing Components Swing is a collection of libraries that contains primitive widgets or controls used for designing.
Unit 131 GUI Layout Managers Learning Outcomes oList and distinguish between the four most common, standard layout managers in Java. oUse these and other.
Swing CS-328 Dick Steflik John Margulies. Swing vs AWT AWT is Java’s original set of classes for building GUIs Uses peer components of the OS; heavyweight.
Unit 11 Object-oriented programming: Graphical user interface Jin Sa.
GUI and event-driven programming An introduction.
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.
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.
Java Programming Chapter 10 Graphical User Interfaces.
OOP (Java): Layout/ OOP Objectives – –describe the basic layout managers for GUIs Semester 2, GUI Layout.
Applets and Frames CS 21a: Introduction to Computing I First Semester,
CSE 219 Computer Science III Graphical User Interface.
Introduction to GUI in Java 1. Graphical User Interface Java is equipped with many powerful,easy to use GUI component such as input and output dialog.
Graphical User Interface CSI 1101 N. El Kadri. Plan - agenda Graphical components Model-View-Controller Observer/Observable.
עקרונות תכנות מונחה עצמים תרגול 4 - GUI. Outline  Introduction to GUI  Swing  Basic components  Event handling.
Java GUI building with Swing. 2 AWT (Abstract Window Toolkit) Present in all Java implementations Described in (almost) every Java textbook Adequate for.
1 Why layout managers Can we perform layout without them? –Yes. A container’s layout property can be set to null. Absolute positioning: specify size and.
10/24/20151 Java GUI Programming. 10/24/20152 What is a GUI? Java has standard packages for creating custom Graphical User Interfaces Some of the fundamental.
1 CSC111H Graphical User Interfaces (GUIs) Introduction GUIs in Java Understanding Events A Simple Application The Containment Hierarchy Layout Managers.
Graphic User Interface. Graphic User Interface (GUI) Most of us interact with computers using GUIs. GUIs are visual representations of the actions you.
JFrame and JPanel CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
CompSci 100E 35.1 Graphical User Interfaces: GUIs  Components  Flat Layouts  Hierarchical Layouts  Designing a GUI  Coding a GUI.
Object Oriented programming Instructor: Dr. Essam H. Houssein.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Applets and Frames. Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved L14: GUI Slide 2 Applets Usually.
Lesson 39: More wrapup on GUIs. 1.This presentation will focus on the decisions around software architecture and the decisions that will drive the code.
MIT-AITI 2004 – Lecture 16 Introduction to Swing.
GUI Basics. What is GUI? A graphical user interface (GUI) is a type of user interface item that allows people to interact with programs in more ways than.
University of Limerick1 Software Architecture Java Layout Managers.
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.
1 GUIs, Layout, Drawing Rick Mercer. 2 Event-Driven Programming with Graphical user Interfaces  Most applications have graphical user interfaces (GUIs)
GUI Basics. Agenda What GUI How to make in java Creating frames Frequently used GUI components Layout Managers.
Computer Science 209 GUIs Model/View/Controller Layouts.
Java layout managers. import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonPanel extends JPanel implements ActionListener { public.
Basics of GUI Programming Chapter 11 and Chapter 22.
J McQuillanSE204:2004/2005: Lecture 3Slide 1 Specialised Components Can create specialised components. Do this by subclassing the component that you are.
1 Layout Managers Layout managers –Provided for arranging GUI components –Provide basic layout capabilities –Processes layout details –Programmer can concentrate.
Graphical User Interface (GUI) Two-Dimensional Graphical Shapes.
Graphical User Interface (GUI)
Introduction to GUI Programming in Java: Frames, Simple Components, and Layouts.
Getting Started with GUI Programming Chapter 10 CSCI 1302.
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 Arranging Components on a User Interface.
GUI.1 Graphical User Interfaces GUIs. GUI.2 The Plan Components Flat Layouts Hierarchical Layouts Designing a GUI Coding a GUI.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter Chapter 7 ( Book Chapter 14) GUI and Event-Driven Programming.
Unit 131 GUI Layout Managers Learning Outcomes oList and distinguish between the four most common, standard layout managers in Java. oUse these and other.
Chapter 7 A First Look at GUI Applications Layout Managers.
A Quick Java Swing Tutorial
Graphical User Interfaces
Object-Orientated Analysis, Design and Programming
Graphical User Interfaces -- GUIs
GUIs Model/View/Controller Layouts
Modern Programming Language Java
Java Swing.
A Quick Java Swing Tutorial
Course Outcomes of Advanced Java Programming AJP (17625, C603)
GUIS: Graphical User Interfaces
Tim McKenna Layout Mangers in Java Tim McKenna
Creating Graphical User Interfaces
Steps to Creating a GUI Interface
A Quick Java Swing Tutorial
GUI building with the AWT
13 April 2010 GUIS: Graphical User Interfaces
Graphical User Interface
Presentation transcript:

Graphical User Interfaces CSE 114 Computer Science I Graphical User Interfaces Half Life 2, by Valve, released 2004

GUI Examples

GUI Graphical User Interface (GUI) provides user-friendly human interaction Building Java GUIs require use of multiple frameworks: Java’s GUI component Libraries javax.swing.* Java’s Event Programming Libraries java.awt.event.* Javax.swing.event.* Java’s Graphics Programming Libraries java.awt.* java.awt.geom.*

GUI Look vs. Behavior Look Behavior physical appearance custom component design containment layout management Behavior interactivity event programmed response

What does a GUI framework do for you? Provides ready made visible, interactive, customizable components you wouldn’t want to have to code your own window content pane

The JFrame Java’s top-level window Has methods for: a window that is not contained inside another window Has methods for: specifying window to fit screen setExtendedState specifying a response to clicking setDefaultCloseOperation getting the content pane (so we can add things to it) getContentPane() specifying size and location (top-left corner) setSize, setLocation (inherited from Component class) Many other useful methods inherited from ancestors

javax.swing.JFrame Class Hierarchy Object Component Container Window Frame JFrame

Useful Inherited Methods for JFrames setting window’s icon setIconImage(Image image) images can be loaded via: Toolkit.getDefaultToolkit.getImage(String fileName) Window for hiding window hide() for tightly packing all components in content pane pack() Component for displaying window setVisible(boolean b)

Defining your own JFrame class import java.awt.Image; import java.awt.Toolkit; import javax.swing.JFrame; public class MyFrame extends JFrame { public MyFrame() { super("Richard McKenna's MyFrame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Toolkit tk = Toolkit.getDefaultToolkit(); Image frameIcon = tk.getImage("NYYankees.jpg"); setIconImage(frameIcon); setExtendedState(MAXIMIZED_BOTH); } Sets frame title Terminates program when frame closed Sets frame icon Maximizes frame

Displaying our MyFrame Construct a MyFrame object Call setVisible(true) to make the frame visible, this spawns a thread which: opens the window starts an event handling loop for the window the program is then event-driven

An Executable MyFrame import java.awt.*; import javax.swing.JFrame; public class MyFrame extends JFrame { public MyFrame() { super("Richard McKenna's MyFrame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Toolkit tk = Toolkit.getDefaultToolkit(); Image frameIcon = tk.getImage("NYYankees.jpg"); setIconImage(frameIcon); setExtendedState(MAXIMIZED_BOTH); } public static void main(String[] args) { MyFrame frame = new MyFrame(); frame.setVisible(true);

Containment A Container object is used to hold GUI components (like buttons) All Swing components (ex: JPanel) are derivatives of the Container class Components are added to a Container using the add method when a Component is added to a Container it will appear inside that Container for JFrames we add components to the content pane

They are useful for two purposes: JPanels JPanels are blank components They are useful for two purposes: Drawing on them Laying out other GUI components JPanels are used to neatly organize your GUI components (ex: buttons) into separate groupings A panel is useful for either purpose, but never both simultaneously Either draw on it or place components inside it

javax.swing.JPanel Class Hierarchy Object Component Container Window Frame JFrame JComponent JPanel

To start creating a GUI using Swing: GUI Programming TIP To start creating a GUI using Swing: Define your own class that extends JFrame Make all of your necessary GUI components instance variables buttons, text areas, etc. When your class is constructed, setup the GUI construct all necessary components layout all components inside your content pane specify all event handlers (next lecture)

Using a JPanel to organize buttons public class MyFrame extends JFrame { private JPanel panel = new JPanel(); private JButton yesButton = new JButton("Yes"); private JButton noButton = new JButton("No"); … public MyFrame() panel.add(yesButton); panel.add(noButton); Container cP = getContentPane(); cP.add(panel); }

How many GUI components do you see? JButton JButton JPanel JTextArea (usually contained inside a JScrollPane) JPanel JButton JButton

Containment hierarchy of MyFrame MyFrame frame Container cP (this is the content pane) JPanel northPanel JButton yesButton JButton noButton JScrollPane jsp JTextArea textArea JPanel southPanel JButton okButton JButton cancelButton

Specifying MyFrame’s components import java.awt.*; import javax.swing.*; public class MyFrame extends JFrame { private JPanel northPanel = new JPanel(); private JButton yesButton = new JButton("Yes"); private JButton noButton = new JButton("No"); private JTextArea myTextArea = new JTextArea(); private JScrollPane jsp = new JScrollPane(myTextArea); private JPanel southPanel = new JPanel(); private JButton okButton = new JButton("Ok"); private JButton cancelButton = new JButton("Cancel"); public MyFrame() { super("Richard McKenna's MyFrame"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Toolkit tk = Toolkit.getDefaultToolkit(); Image frameIcon = tk.getImage("NYYankees.jpg"); setIconImage(frameIcon); setExtendedState(MAXIMIZED_BOTH); layoutGUI(); }

Laying out MyFrame public void layoutGUI() { northPanel.add(yesButton); northPanel.add(noButton); southPanel.add(okButton); southPanel.add(cancelButton); Container c = getContentPane(); c.add(northPanel, BorderLayout.NORTH); c.add(jsp, BorderLayout.CENTER); c.add(southPanel, BorderLayout.SOUTH); } … Uses a layout manager to position components inside a container

Layout Managers Java layout managers use algorithms to position and size GUI components inside a container every container has its own layout manager when the user resizes the container, the layout manager decides how to rearrange the contents LayoutManager interface classes that implement LayoutManager define algorithms for placing displaying components inside containers. FlowLayout, BorderLayout, BoxLayout, GridLayout, GridBagLayout Note: for these, setPreferredSize does nothing What about null? setPreferredSize specifies exact component dimensions

Layout Management Appearance is determined by: type of layout manager order components are added to container location parameters used for adding components To specify a layout for a Container use setLayout method or, use the default layout manager Default Layout Mangers: JPanel: FlowLayout JFrame content pane: BorderLayout

FlowLayout Simplest, placed components: left to right in order of calls to add components aligned LEFT, RIGHT, or CENTER starts a new row if needed JFrame frame = new Frame(“FlowTest”); JPanel panel = new JPanel(); panel.add(new JButton("A")); panel.add(new JButton("B")); panel.add(new JButton("C")); panel.add(new JButton("D")); panel.add(new JButton("E")); frame.getContentPane().add(panel);

BorderLayout 5 regions (CENTER, NORTH, SOUTH, EAST, WEST) 1 component allowed in each that component may also contain other components North/south stretched horizontally East/west stretched vertically JFrame frame = new JFrame("BorderTest"); Container cP = frame.getContentPane(); cP.add(new JButton("North"), BorderLayout.NORTH); cP.add(new JButton("South"), BorderLayout.SOUTH); cP.add(new JButton("East"), BorderLayout.EAST); cP.add(new JButton("West"), BorderLayout.WEST); cP.add(new JButton("Center"), BorderLayout.CENTER);

Which LayoutManager to use? My advice: keep it simple Use: BorderLayout to organize panels inside of the content pane or another JPanel FlowLayout to organize components inside panels ex: JButtons sometimes it is useful to place other JPanels containing components inside JPanels Using these simple layouts, you can design the layout of many applications (including our project)

JPanels inside other JPanels

Specifying MyFrame’s components import java.awt.*; import javax.swing.*; public class MyFrame extends JFrame { … private JPanel southPanel = new JPanel(); private JPanel northPanelInSouthPanel = new JPanel(); private JPanel southPanelInSouthPanel = new JPanel(); private JButton okButton = new JButton("Ok"); private JButton cancelButton = new JButton("Cancel"); private JLabel statusLabel = new JLabel("LAYOUT EXAMPLE"); public MyFrame() { layoutGUI(); }

Laying out MyFrame public void layoutGUI() { northPanel.add(yesButton); northPanel.add(noButton); southPanel.setLayout(new BorderLayout()); northPanelInSouthPanel.add(okButton); northPanelInSouthPanel.add(cancelButton); northPanelInSouthPanel.setBackground(Color.RED); southPanelInSouthPanel.add(statusLabel); southPanelInSouthPanel.setBackground(Color.YELLOW); southPanel.add(northPanelInSouthPanel, "North"); southPanel.add(southPanelInSouthPanel, "South"); Container c = getContentPane(); c.add(northPanel, BorderLayout.NORTH); c.add(jsp, BorderLayout.CENTER); c.add(southPanel, BorderLayout.SOUTH); }