Advanced Java Class GUI part 1 Intro to GUI GUI = Graphical User - - PowerPoint PPT Presentation

advanced java class
SMART_READER_LITE
LIVE PREVIEW

Advanced Java Class GUI part 1 Intro to GUI GUI = Graphical User - - PowerPoint PPT Presentation

Advanced Java Class GUI part 1 Intro to GUI GUI = Graphical User Interface -- Gooey Just because its gooey does not mean you may write messy code. GUI is the view layer, and it should be separated from the


slide-1
SLIDE 1

Advanced Java Class

GUI – part 1

slide-2
SLIDE 2

Intro to GUI

  • GUI = Graphical User Interface -- “Gooey”
  • Just because it’s “gooey” does not mean you may

write messy code.

– GUI is the “view layer”, and it should be separated from the controller and model layers.

  • AWT = Abstract Windowing Toolkit
  • Swing = better versions of AWT classes
slide-3
SLIDE 3

GUI terminology

  • Components = buttons, text fields, frames, dialog boxes,

scrollbars, popup menus, scrollable lists, etc.

  • Containers = things that hold Components. A container is also

a component. Examples: Panel, Window.

  • LayoutManagers arrange Components inside of Containers.
  • Use Graphics objects to draw directly onto a component. This

can draw shapes, text, images, etc.

  • “Painting” is when a component is drawn onto the screen.
  • Events occur when a user clicks the mouse, types on the

keyboard, types in a text field, or selects an item from a list.

  • Listeners (or adapters) handle events, and are specific to a

certain type of event.

slide-4
SLIDE 4

A few important GUI packages

  • AWT (java.awt and subpackages)

– AWT Events (java.awt.event) – Java2D (java.awt.geom)

  • Swing (javax.swing and subpackages)

– Swing Events (javax.swing.event)

slide-5
SLIDE 5

Swing vs. AWT

  • Don’t mix AWT with Swing, and always use Swing if available
  • AWT was original GUI API – quite limited!

– not very platform independent – you must do double-buffering yourself – native windows consume a lot of system resources

  • Swing is built on AWT, and is a big improvement

– mostly light-weight classes – 100% pure java = platform independent, because it doesn’t depend on native code – pluggable look and feel allows the program to reflect the platform it’s currently running on – double buffers automatically

  • Note that Swing components start with “J”.

– “Frame” refers to the old AWT class. – “JFrame” refers to the new Swing class.

slide-6
SLIDE 6

Swing Components

  • common swing components: see figure 6-

3, p 393-396

  • MVC layers

– The model layer is a separate class, which may be shared by multiple Swing components – The Controller and View layers of a component are not separated, because of the nature of GUI components – the view is the controller! – See figure 6-4 on page 397 & 398

slide-7
SLIDE 7

Layout Managers

  • LayoutManagers arrange components

within Containers.

  • They account for things that you cannot

know at compile time, like differing screen resolutions, platform differences, fonts, etc.

  • Containers are components, and child

containers can have a LayoutManger that is different from their parent’s.

slide-8
SLIDE 8

Using LayoutManagers

  • Create a new Container. It has a default

LayoutManager, which you can override by calling the setLayout method on it.

  • LayoutManager classes:

– BorderLayout – BoxLayout – CardLayout – FlowLayout – GridBagLayout – GridLayout

slide-9
SLIDE 9

Layout Paradigms

  • BorderLayout: North, South, East, West, and Center. figures 6-12

& 6-13

  • FlowLayout: lines the components up horizontally from left to right.

Can specifiy justification; default is center. fig. 6-14

  • GridLayout: has columns and rows. components are added left to

right and top to bottom, like a text editor. figure 6-15

  • GridbagLayout: more flexible than GridLayout – components can

be added to any cell, and can span multiple rows and columns. figure 6-16

  • CardLayout: imagine a deck of cards – only one component is

visible at a time.

  • BoxLayout: components are in a single-file line, which can be

horizontal or vertical. figure 6-17

  • Note: the above figures are in a JTabbedPane, which does it’s own

LayoutManaging.

slide-10
SLIDE 10

Painting

  • You can override a Swing component’s

paintComponent method if you don’t want to use the component’s default appearance. Call super.paintComponent (unless you want transparency).

  • Call repaint() when you want to explicitly refresh

what the user is seeing.

  • You can also override update() if you want close

control over the refreshing of a part of the component’s appearance.

slide-11
SLIDE 11

Methods you can paint with

  • Graphics class

– drawString – drawLine – drawRect – drawPolygon – drawArc – drawImage – fillRect – fillPolygon – fillArc

  • Graphics class,

continued...

– setColor – setFont – setXORMode( Color c)

  • gives colors that are an

XOR of c and what was already there – fun to play with

– setPaintMode()

  • just overwrite what’s there

– this is the default

slide-12
SLIDE 12

Java 2D

  • Parts of API

– Graphics2D class in java.awt – java.awt.geom – java.awt.font – java.awt.image

  • Advantages over Graphics class

– antialiasing smooths edges – can fill with contents other than a solid color – can use any system font – printing is easier (see chapter 7) – can paint any shape you want, not just predefined ones – “Strokes” – any width, and varying patterns (dashed, etc.) – can squish, stretch, rotate, etc. anything you draw