Ground-Up Java
Chapter 1: An Introduction to Computers That Will Actually Help You in Life
- Figure 1.1: A bit
- Figure 1.2: A byte
- Figure 1.3: Several bytes
- Figure 1.4: SimCom architecture
- Figure 1.5: Opcode and argument bits
- Figure 1.6: SimCom in action
Chapter 2: Data
- Figure 2.1: Assembly language
- Figure 2.2: Compiled language
- Figure 2.3: Evolution of a Java application
- Figure 2.4: SimpleBase2Lab
- Figure 2.5: A base-2 odometer
- Figure 2.6: An example of two's complement
- Figure 2.7: Two's complement lab
Chapter 3: Operations
- Figure 3.1: EvaluatorLab
- Figure 3.2: EvaluatorLab after evaluation
- Figure 3.3: The unary bitwise operator ~
- Figure 3.4: Bitwise "and"
- Figure 3.5: Left-shift: <<
- Figure 3.6: Bitwise right-shift: >>>
- Figure 3.7: Numeric right-shift: >>
- Figure 3.8: ShiftLab
- Figure 3.9: ShiftLab after shifting
- Figure 3.10: BoolLab: initial screen
- Figure 3.11: BoolLab after execution
- Figure 3.12: Data type width, not to scale
- Figure 3.13: Data type width relationships
Chapter 4: Methods
- Figure 4.1: MethodLab
- Figure 4.2: MethodLab after animating
- Figure 4.3: Numeric type widths
Chapter 5: Conditionals and Loops
- Figure 5.1: While Lab: initial display
- Figure 5.2: While Lab with modified test expression
- Figure 5.3: While Lab after execution
- Figure 5.4: A common loop usage
- Figure 5.5: A cycloid
- Figure 5.6: NestedLoopLab: initial display
- Figure 5.7: NestedLoopLab: 8:15
- Figure 5.8: NestedLoopLab with a loop
- Figure 5.9: NestedLoopLab with nested loops
Chapter 6: Arrays
- Figure 6.1: A new array
- Figure 6.2: A used array
- Figure 6.3: A two-dimensional array
- Figure 6.4: BoolArrayLab
- Figure 6.5: BoolArrayLab drawing a parabola
- Figure 6.6: Accessible and inaccessible memory
- Figure 6.7: An array of bytes in inaccessible memory
- Figure 6.8: Reference and array
- Figure 6.9: Two references, one array
- Figure 6.10: CreateArrayLab
Chapter 7: Introduction to Objects
- Figure 7.1: Class as mental category
- Figure 7.2: Reference and object
- Figure 7.3: DataLab
- Figure 7.4: Multiple objects
- Figure 7.5: SeveralObjectsLab
- Figure 7.6: SeveralObjectsLab reconfigured
- Figure 7.7: SeveralObjectsLab reconfigured and executed
- Figure 7.8: ObjectMethodLab
- Figure 7.9: ObjectLifeCycleLab
- Figure 7.10: ObjectLifeCycleLab after running a while
Chapter 8: Inheritance
- Figure 8.1: A Simple inheritance hierarchy
- Figure 8.2: Inherit Lab
- Figure 8.3: Inherit Lab's class-editing dialog box
- Figure 8.4: Object layers
- Figure 8.5: Inheritance of Officer
Chapter 9: Packages and Access
- Figure 9.1: Example package/ directory structure
- Figure 9.2: Package as namespace
- Figure 9.3: Initial directory structure
- Figure 9.4: After compilation
- Figure 9.5: After more compilation
- Figure 9.6: Polymorphism revisited
- Figure 9.7: Chart class and subclasses
Chapter 10: Interfaces
- Figure 10.1: Animal kingdom class inheritance
Chapter 11: Exceptions
- Figure 11.1: Simple Exception Lab
- Figure 11.2: Simple Exception Lab: final state with normal execution
- Figure 11.3: Advanced Exception Lab
- Figure 11.4: Choosing an exception type in Advanced Exception Lab
- Figure 11.5: Advanced Exception Lab reconfigured
Chapter 12: The Core Java Packages and Classes
- Figure 12.1: Structure of the API index
- Figure 12.2: Structure of the classes frame
- Figure 12.3: Class description
- Figure 12.4: Field/constructor/ method summaries
- Figure 12.5: StringLab
- Figure 12.6: StringLab: uppercase, 2 references
- Figure 12.7: StringLab: lowercase, 1 reference
- Figure 12.8: String references and objects
- Figure 12.9: Command-line arguments
- Figure 12.10: ConcatLab
- Figure 12.11: ConcatLab's Point3D class
- Figure 12.12: ConcatLab's Point3D class
Chapter 13: File Input and Output
- Figure 13.1: Simple Output Lab
- Figure 13.2: Simple Output Lab in progress
- Figure 13.3: Simple Input Lab in progress
- Figure 13.4: Output chaining
- Figure 13.5: Input chaining
- Figure 13.6: Data Chain Lab
- Figure 13.7: Data Chain Lab in progress: Text, writers, and readers
- Figure 13.8: Readers and writers
- Figure 13.9: Line number reader and file reader
Chapter 14: Painting
- Figure 14.1: A frame with boring contents
- Figure 14.2: Color Lab
- Figure 14.3: Color Lab with a predefined color
- Figure 14.4: Pixel coordinates
- Figure 14.5: A black line on a white background
- Figure 14.6: A rectangle
- Figure 14.7: Ovals and bounding boxes
- Figure 14.8: Three ovals
- Figure 14.9: Filled rectangle and ovals
- Figure 14.10: Original CenteredOval
- Figure 14.11: Resized CenteredOval
- Figure 14.12: The baseline
- Figure 14.13: Text and baseline in a frame
- Figure 14.14: Text in a frame
- Figure 14.15: Font Lab
- Figure 14.16: Font Lab with an exotic font
- Figure 14.17: Initial Frame Lab display
- Figure 14.18: Frame Lab with custom configuration
- Figure 14.19: The result of Figure 14.18
Chapter 15: Components
- Figure 15.1: A component sampler
- Figure 15.2: A button in a frame
- Figure 15.3: A fancy button
- Figure 15.4: A simple checkbox
- Figure 15.5: A checked checkbox
- Figure 15.6: Three checkboxes and a button
- Figure 15.7: Checkboxes as radio buttons
- Figure 15.8: Multiple checkbox groups
- Figure 15.9: A choice
- Figure 15.10: An expanded choice
- Figure 15.11: Two choices
- Figure 15.12: Choices with labels
- Figure 15.13: A menu in a menu bar
- Figure 15.14: A menu with a separator
- Figure 15.15: Hierarchical menus
- Figure 15.16: Two text fields
- Figure 15.17: A text area
- Figure 15.18: Multiple checkbox groups
- Figure 15.19: A text area with scroll bars
- Figure 15.20: A pair of disappointing scrollbars
- Figure 15.21: Flow layout manager
- Figure 15.22: Wider
- Figure 15.23: Narrower
- Figure 15.24: Left-aligned
- Figure 15.25: Flow Lab
- Figure 15.26: Scrollbar at North
- Figure 15.27: North and South occupied
- Figure 15.28: North, East, and West occupied
- Figure 15.29: North, East, West, and Center occupied
- Figure 15.30: A panel in a frame
- Figure 15.31: Layout lab
- Figure 15.32: Layout lab's frame editing dialog
- Figure 15.33: Layout Lab with an added panel
- Figure 15.34: A button in a panel in a frame
- Figure 15.35: Layout Lab makes it so
- Figure 15.36: No layout manager
Chapter 16: Events
- Figure 16.1: A GUI waiting for events
- Figure 16.2: A button that sends events
- Figure 16.3: Simple Event Lab: initial screen
- Figure 16.4: Simple Event Lab with simulated buttons
- Figure 16.5: Simple Event Lab with a listener class
- Figure 16.6: Simple Event Lab with a listener object
- Figure 16.7: Simple Event Lab continued
- Figure 16.8: One listener object for many buttons
- Figure 16.9: Simple Nim GUI
- Figure 16.10: Nim Lab
- Figure 16.11: Nim, with output to a text area
- Figure 16.12: Nim with graphical output
- Figure 16.13: Nim with graphical output, game in progress
- Figure 16.14: Enabled and disabled buttons
- Figure 16.15: Nim with disabled buttons
- Figure 16.16: Check box and choice
- Figure 16.17: Receiving events from a check box and a choice
- Figure 16.18: Event Lab
- Figure 16.19: Scrollbar and text field
Chapter 17: Final Project
- Figure 17.1: Final Project
- Figure 17.2: Final Project, with lines
- Figure 17.3: Menu schematic
- Figure 17.4: Teting the menu's look
- Figure 17.5: Window, Frame, and FileDialog
- Figure 17.6: File dialog box configured for opening
- Figure 17.7: Too many radio buttons
- Figure 17.8: Testing color selection
- Figure 17.9: GUI layout
- Figure 17.10: Positioning text
Appendix A: Downloading and Installing Java
- Figure A.1: Windows SDK file layout