Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout...
-
Upload
lewis-hudson -
Category
Documents
-
view
223 -
download
0
Transcript of Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout...
![Page 1: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/1.jpg)
Building Graphical User Interfaces
5.0
![Page 2: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/2.jpg)
2
Overview
• Constructing GUIs• Interface components• GUI layout• Event handling
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 3: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/3.jpg)
3
GUI Principles
• Components: GUI building blocks.– Buttons, menus, sliders, etc.
• Layout: arranging components to form a usable GUI.– Using layout managers.
• Events: reacting to user input.– Button presses, menu selections,
etc.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 4: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/4.jpg)
4
AWT and Swing
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 5: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/5.jpg)
5
Elements of a frame
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Title
Menu bar
Content pane
Window controls
![Page 6: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/6.jpg)
6
Creating a frame
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
import java.awt.*;import java.awt.event.*;import javax.swing.*; public class ImageViewer{
private JFrame frame;
/**
* Create an ImageViewer show it on screen.
*/
public ImageViewer()
{
makeFrame();
}
// rest of class omitted.}
![Page 7: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/7.jpg)
7
The content pane
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
/**
* Create the Swing frame and its content.
*/
private void makeFrame()
{
frame = new JFrame("ImageViewer");
Container contentPane = frame.getContentPane();
JLabel label = new JLabel("I am a label.");
contentPane.add(label);
frame.pack();
frame.setVisible(true);
}
![Page 8: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/8.jpg)
8
Adding menus
• JMenuBar– Displayed below the title.– Contains the menus.
• JMenu– e.g. File. Contains the menu items.
• JMenuItem– e.g. Open. Individual items.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 9: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/9.jpg)
9 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private void makeMenuBar(JFrame frame)
{
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
// create the File menu
JMenu fileMenu = new JMenu("File");
menubar.add(fileMenu);
JMenuItem openItem = new JMenuItem("Open");
fileMenu.add(openItem);
JMenuItem quitItem = new JMenuItem("Quit");
fileMenu.add(quitItem);
}
![Page 10: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/10.jpg)
10
Event handling
• Events correspond to user interactions with components.
• Components are associated with different event types.– Frames are associated with WindowEvent.– Menus are associated with ActionEvent.
• Objects can be notified when an event occurs.– Such objects are called listeners.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 11: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/11.jpg)
11
Centralized event receipt
• A single object handles all events.– Implements the ActionListener
interface.– Defines an actionPerformed method.
• It registers as a listener with each component.– item.addActionListener(this)
• It has to work out which component has dispatched the event.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 12: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/12.jpg)
12
ActionListener
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public interface ActionListener{ public void actionPerformed(ActionEvent ev); }
![Page 13: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/13.jpg)
13 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class ImageViewer implements ActionListener{ … public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command.equals("Open")) { … } else if (command.equals("Quit")) { … } … } … private void makeMenuBar(Jframe frame) { … openItem.addActionListener(this); … }}
![Page 14: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/14.jpg)
14
Centralized event handling
• The approach works.• It is used, so you should be aware of
it.• However …
– It does not scale well.– Identifying components by their text is
fragile.
• An alternative approach is preferred.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 15: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/15.jpg)
15
Nested class syntax
• Class definitions may be nested.– public class Enclosing{ … private class Inner { … }}
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 16: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/16.jpg)
16
Inner classes
• Instances of the inner class are localized within the enclosing class.
• Instances of the inner class have access to the private members of the enclosing class.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 17: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/17.jpg)
17
Anonymous inner classes
• Obey the rules of inner classes.• Used to create one-off objects for
which a class name is not required.
• Use a special syntax.• The instance is always referenced
via its supertype, as it has no subtype name.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 18: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/18.jpg)
18
Anonymous action listener
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openFile(); }});
![Page 19: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/19.jpg)
19
Anonymous class elements
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
openItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { openFile(); }}
);
Anonymous object creation
Actual parameter
Class definition
![Page 20: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/20.jpg)
20
Exit on window close
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }});
WindowAdapter provides a no-op implementation of the
WindowListener interface.
![Page 21: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/21.jpg)
21
The imageviewer project
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 22: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/22.jpg)
22
Image processing
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 23: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/23.jpg)
23
Class responsibilities
• ImageViewer– Sets up the GUI structure.
• ImageFileManager– Static methods for image file loading and
saving.
• ImagePanel– Displays the image within the GUI.
• OFImage– Models a 2D image.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 24: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/24.jpg)
24
OFImage
• Our subclass of BufferedImage.• Represents a 2D array of pixels.• Important methods:
– getPixel, setPixel– getWidth, getHeight
• Each pixel has a color.– We use java.awt.Color.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 25: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/25.jpg)
25
Adding an ImagePanel
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class ImageViewer{ private JFrame frame; private ImagePanel imagePanel;
…
private void makeFrame() { Container contentPane = frame.getContentPane(); imagePanel = new ImagePanel(); contentPane.add(imagePanel); }
…}
![Page 26: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/26.jpg)
26
Loading an image
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public class ImageViewer{ private JFrame frame; private ImagePanel imagePanel;
…
private void openFile() { File selectedFile = …; OFImage image = ImageFileManager.loadImage(selectedFile); imagePanel.setImage(image); frame.pack(); }
…}
![Page 27: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/27.jpg)
27
Layout managers
• Manage limited space for competing components.– FlowLayout, BorderLayout, GridLayout, BoxLayout, GridBagLayout.
• Manage Container objects, e.g. a content pane.
• Each imposes its own style.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 28: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/28.jpg)
28
FlowLayout
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 29: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/29.jpg)
29
BorderLayout
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 30: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/30.jpg)
30
GridLayout
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 31: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/31.jpg)
31
BoxLayout
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
Note: no componentresizing.
![Page 32: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/32.jpg)
32
Nested containers
• Sophisticated layouts can be obtained by nesting containers.– Use JPanel as a basic container.
• Each container will have its own layout manager.
• Often preferable to using a GridBagLayout.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 33: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/33.jpg)
33
Struts and Glue
• Invisible components used as spacing.• Available from the Box class.• Strut: fixed size.
– Component createHorizontalStrut(int width)– Component createVerticalStrut(int height)
• Glue: fills available space.– Component createHorizontalGlue() – Component createVerticalGlue()
http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 34: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/34.jpg)
34
Dialogs
• Modal dialogs block all other interaction.– Forces a response from the user.
• Non-modal dialogs allow other interaction.– This is sometimes desirable.– May be difficult to avoid
inconsistencies.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 35: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/35.jpg)
35
JOptionPane standard dialogs
• Message dialog– Message text plus an OK button.
• Confirm dialog– Yes, No, Cancel options.
• Input dialog– Message text and an input field.
• Variations are possible.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 36: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/36.jpg)
36
A message dialog
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private void showAbout(){ JOptionPane.showMessageDialog(frame, "ImageViewer\n" + VERSION, "About ImageViewer", JOptionPane.INFORMATION_MESSAGE);}
![Page 37: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/37.jpg)
37
Image filters
• Functions applied to the whole image.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
int height = getHeight();int width = getWidth();for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { Color pixel = getPixel(x, y); alter the pixel's color value; setPixel(x, y, pixel); }}
![Page 38: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/38.jpg)
38
Adding further filters
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
private void makeLighter(){ if(currentImage != null) { currentImage.lighter(); frame.repaint(); showStatus("Applied: lighter"); } else { showStatus("No image loaded."); }}
private void threshold(){ if(currentImage != null) { currentImage.threshold(); frame.repaint(); showStatus("Applied: threshold"); } else { showStatus("No image loaded."); }}
Code duplication?Refactor!
![Page 39: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/39.jpg)
39
Adding further filters
• Define a Filter superclass (abstract).
• Create function-specific subclasses.
• Create a collection of subclass instances in ImageViewer.
• Define a generic applyFilter method.
• See imageviewer2-0.Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 40: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/40.jpg)
40
imageviewer2-0
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 41: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/41.jpg)
41
Buttons and nested layouts
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
A GridLayout insidea FlowLayout insidea BorderLayout.
![Page 42: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/42.jpg)
42
Borders
• Used to add decoration around components.
• Defined in javax.swing.border– BevelBorder, CompoundBorder, EmptyBorder, EtchedBorder, TitledBorder.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 43: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/43.jpg)
43
Adding spacing
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
JPanel contentPane = (JPanel)frame.getContentPane();contentPane.setBorder(new EmptyBorder(6, 6, 6, 6)); // Specify the layout manager with nice spacingcontentPane.setLayout(new BorderLayout(6, 6)); imagePanel = new ImagePanel();imagePanel.setBorder(new EtchedBorder());contentPane.add(imagePanel, BorderLayout.CENTER);
![Page 44: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/44.jpg)
44
Other components
• Slider• Spinner• Tabbed pane• Scroll pane
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 45: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/45.jpg)
45
Review
• Aim for cohesive application structures.– Endeavor to keep GUI elements separate
from application functionality.
• Pre-defined components simplify creation of sophisticated GUIs.
• Layout managers handle component juxtaposition.– Nest containers for further control.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
![Page 46: Building Graphical User Interfaces 5.0. 2 Overview Constructing GUIs Interface components GUI layout Event handling Objects First with Java - A Practical.](https://reader035.fdocuments.us/reader035/viewer/2022081513/56649d6e5503460f94a4f925/html5/thumbnails/46.jpg)
46
Review
• Many components recognize user interactions with them.
• Reactive components deliver events to listeners.
• Anonymous inner classes are commonly used to implement listeners.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling