O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Learning Path: Professional Java Developer

Video Description

40+ hours of video instruction.

Overview

The professional programmer’s Deitel® video guide to Java™ SE 7 and SE 8 development with the powerful Java™ platform

Description

Written for programmers with a background in high-level language programming, this LiveLesson applies the Deitel signature live-code approach to teaching programming and explores the Java™ language and Java™ APIs in depth. The LiveLesson presents concepts in the context of fully tested programs, not code fragments. The LiveLesson features hundreds of complete Java™ programs with thousands of lines of proven Java™ code, and hundreds of tips that will help you build robust applications.

The source code repository for this LiveLesson can be found at www.informit.com/title/9780133489347.

Paul J. Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is a graduate of MIT, where he studied Information Technology. He holds the Sun (now Oracle) Certified Java Programmer and Certified Java Developer certifications, and is an Oracle Java Champion. Through Deitel & Associates, Inc., he has delivered Java, C#, Visual Basic, C++, C and Internet programming courses to industry clients, including Cisco, IBM, Sun Micro systems, Dell, Siemens, Lucent Technologies, Fidelity, NASA at the Kennedy Space Center, the National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Stratus, Cambridge Technology Partners, One Wave, Hyperion Software, Adra Systems, Entergy, CableData Systems, Nortel Networks, Puma, iRobot, Invensys and many more. He and his co-author, Dr. Harvey M. Deitel, are the world’s best-selling programming-language textbook/professional book authors.

About Sneak Peek:

Sneak Peek videos are available to Safari Books Online subscribers offering early access to the very latest information on a given topic. Sneak Peek videos do not include post-production editing and may include further revisions before the video is complete.

Skill Level

Beginner-to-Intermediate

What you Will Learn

Start with an introduction to Java™ using an early classes and objects approach, then rapidly move on to more advanced topics, including GUI, graphics, exception handling, lambdas, streams, functional interfaces, object serialization, concurrency, generics, generic collections, JDBC™ and more. You’ll enjoy Deitels’ classic treatment of object-oriented programming and the object-oriented design ATM case study, including a complete Java™ implementation. When you’re finished, you’ll have everything you need to build industrial-strength object-oriented Java™ SE 7 and SE 8 applications.

Practical, Example-Rich Coverage of:

  • Java™ SE 7 and SE 8
  • Lambdas, Streams, Functional Interfaces with Default and Static Methods
  • Classes, Objects, Encapsulation, Inheritance, Polymorphism, Interfaces
  • Swing and JavaFX GUIs; Graphics
  • Integrated Exception Handling
  • Files, Streams, Object Serialization
  • Multithreading and Concurrency for Optimal Multi-Core Performance
  • Generics and Generic Collections
  • Database (JDBC™, SQL and JavaDB)
  • Using the Debugger and the API Docs
  • Industrial-Strength, Object-Oriented Design ATM Case Study and more.

Who should take this course?

Programmers experienced in a high-level programming language and interested in building industrial-strength applications in Java

Course requirements

Familiarity with any high-level programming language, including C, C++, C#, JavaScript, etc.

Table of Contents

  1. Part I
    1. Learning Path: Professional Java Developer: Introduction to Part I 00:11:05
  2. Before You Begin: Setting Up Your Development Environment
    1. Overview 00:01:15
    2. Software Used 00:01:40
    3. Installing the JDK (Required) 00:05:26
    4. Installing Eclipse (Optional) 00:02:27
    5. Installing IntelliJ IDEA 00:00:58
    6. Downloading the Code Examples and Contacting Me for Help 00:02:20
  3. Dive Into NetBeans: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:01
    2. Getting NetBeans, opening the IDE and configuring tabs and line numbers 00:06:00
    3. Creating a project and adding existing code to the project 00:07:22
    4. Creating a new program 00:04:01
  4. Dive Into Eclipse: Using Eclipse to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:01
    2. Getting Eclipse, opening the IDE and configuring tabs and line numbers 00:06:26
    3. Creating a project and adding existing code to the project 00:06:44
    4. Creating a new program 00:05:46
  5. Dive Into IntelliJ IDEA: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:08
    2. Getting IntelliJ, opening the IDE and configuring tabs and line numbers 00:05:00
    3. Creating a project and adding existing code to the project 00:05:48
    4. Creating a new program 00:05:30
  6. Lesson 1: Test Driving a Java Program at the Command Line
    1. Introduction 00:00:53
    2. Test-Driving the command line 00:10:23
  7. Lesson 2: Introduction to Java Applications
    1. Introduction 00:01:49
    2. Text-printing program 00:20:59
    3. Printing a line of text with multiple statements 00:01:59
    4. Printing multiple lines of text with a single statement 00:02:32
    5. Displaying multiple lines with method System.out.printf 00:04:03
    6. Addition program and an Introduction to using the online Java documentation 00:25:06
    7. Compare integers using if statements, relational operators and equality operators 00:09:17
  8. Lesson 3: Introduction to Classes, Objects, Methods and Strings
    1. Introduction 00:02:59
    2. Primitive Types vs. Reference Types 00:16:25
    3. Account class that contains a name instance variable and methods to set and get its value 00:16:03
    4. Creating and manipulating an Account object 00:03:36
    5. Conceptual view of an Account object 00:04:53
    6. Account class with a constructor that initializes the name instance variable 00:03:30
    7. Using the Account constructor to initialize the name instance variable when each Account object is created 00:07:16
    8. Account class with a double instance variable balance and a constructor and deposit method that perform validation 00:05:55
    9. Inputting and outputting floating-point numbers with Account objects 00:10:39
  9. Lesson 4: Control Statements, Part 1
    1. Introduction 00:00:48
    2. Student Class: Nested if…else Statements 00:15:39
    3. Calculating a class average using the while statement and counter-controller repetition 00:06:23
    4. Calculating a class average using the while statement and sentinel-controller repetition 00:06:35
    5. Arithmetic assignment operators 00:01:36
    6. Prefix increment and postfix increment operators 00:03:30
  10. Lesson 5: Control Statements, Part 2
    1. Introduction 00:01:31
    2. Compound-interest calculations with for 00:05:04
    3. do…while repetition statement 00:02:29
    4. LetterGrades class that uses the switch statement to count letter grades 00:09:49
    5. Demonstrating Strings in switch—Class that represents an auto insurance policy 00:10:49
    6. break statement exiting a for statement 00:03:41
    7. continue statement terminating an iteration of a for statement 00:02:36
    8. Logical operators 00:09:33
  11. Lesson 6: Methods—A Deeper Look
    1. Introduction 00:03:38
    2. static Methods, static Fields and Class Math 00:09:23
    3. Programmer-declared method maximum with three double parameters 00:09:52
    4. Argument Promotion and Casting 00:06:06
    5. Java API Packages 00:08:29
    6. Shifted and scaled random integers 00:10:51
    7. Roll a six-sided die 6,000,000 times 00:02:08
    8. Craps class simulates the dice game craps 00:11:54
    9. Scope class demonstrates field and local-variable scopes 00:11:25
    10. Overloaded method declarations 00:10:34
  12. Lesson 7:Arrays
    1. Introduction 00:04:16
    2. Initializing the elements of an array to default values of zero 00:05:13
    3. Initializing the elements of an array with an array initializer 00:02:20
    4. Calculating the values to be placed into the elements of an array 00:02:34
    5. Computing the sum of the elements of an array 00:03:19
    6. Bar chart printing program 00:02:40
    7. Die-rolling program using arrays instead of switch 00:03:59
    8. Poll analysis program 00:09:42
    9. Card shuffling and dealing 00:18:30
    10. Using the enhanced for statement to total integers in an array 00:03:35
    11. Passing arrays and individual array elements to methods 00:07:43
    12. GradeBook class using an array to store test grades 00:08:43
    13. Initializing two-dimensional arrays 00:08:08
    14. GradeBook class using a two-dimensional array to store grades 00:11:18
    15. Using variable-length argument lists 00:05:07
    16. Initializing an array using command-line arguments 00:09:04
    17. Arrays class methods and System.arraycopy 00:07:53
    18. Generic ArrayList<T> collection demonstration 00:12:51
  13. Part II
    1. Learning Path: Professional Java Developer Introduction to Part II 00:16:26
  14. Lesson 8: Classes and Objects—A Deeper Look
    1. Introduction 00:02:57
    2. Time1 class declaration maintains the time in 24-hour format 00:23:03
    3. Private members of class Time1 are not accessible 00:02:01
    4. "this" used implicitly and explicitly to refer to members of an object 00:05:54
    5. Time2 class with overloaded constructors 00:19:34
    6. Composition demonstration with classes Date and Employee 00:12:12
    7. Declaring an enum type with a constructor and explicit instance fields and accessors for these fields 00:10:22
    8. Garbage Collection 00:04:18
    9. Declaring and using static variables and methods to maintain a count of the number of Employee objects in memory 00:07:38
    10. static import of Math class methods 00:02:20
    11. Package access members of a class are accessible by other classes in the same package 00:05:27
    12. Compound-interest calculations with BigDecimal 00:13:32
  15. Lesson 9: Object-Oriented Programming—Inheritance
    1. Introduction 00:03:12
    2. Inheritance hierarchy UML class diagrams 00:06:40
    3. Creating and using a CommissionEmployee class 00:13:12
    4. Creating and Using a BasePlusCommissionEmployee Class 00:05:29
    5. Creating a CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy 00:08:52
    6. CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables 00:04:50
    7. CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables 00:12:31
    8. Class Object 00:08:56
  16. Lesson 10: Object-Oriented Programming—Polymorphism
    1. Introduction 00:06:21
    2. Demonstrating Polymorphic Behavior—Assigning superclass and subclass references to superclass and subclass variables 00:10:57
    3. Abstract Classes and Methods 00:05:30
    4. Case Study: Payroll System Using Polymorphism 00:09:00
    5. Abstract Superclass Employee 00:08:31
    6. Concrete Subclass SalariedEmployee 00:07:54
    7. Concrete Subclass HourlyEmployee 00:05:37
    8. Concrete Subclass CommissionEmployee 00:02:25
    9. Indirect Concrete Subclass BasePlusCommissionEmployee 00:05:15
    10. Polymorphic Processing, Operator instanceof and Downcasting 00:22:03
    11. final Methods and Classes 00:06:34
    12. Creating and Using Interfaces (Java SE 7 and earlier) 00:06:32
    13. Developing a Payable Hierarchy 00:05:02
    14. Class Invoice 00:04:36
    15. Modifying Class Employee to Implement Interface Payable 00:03:30
    16. Modifying Class SalariedEmployee for Use in the Payable Hierarchy 00:02:14
    17. Using Interface Payable to Process Invoices and Employees Polymorphically 00:12:27
    18. Java SE 8 Interface Enhancements overview 00:08:15
  17. Lesson 11: Exception Handling—A Deeper Look
    1. Introduction 00:03:57
    2. Integer division without exception handling 00:09:34
    3. Handling ArithmeticExceptions and InputMismatchExceptions 00:15:27
    4. Throwable hierarchy; Introduction to checked and unchecked exceptions 00:06:35
    5. try…catch…finally exception-handling mechanism 00:10:06
    6. Stack unwinding and obtaining data from an exception object 00:08:28
    7. Chained exceptions 00:06:01
    8. Declaring new exception types 00:04:42
    9. Checking with assert that a value is within range 00:05:25
    10. try-with-Resources: Automatic Resource Deallocation 00:03:44
  18. Lesson 12: GUI Components: Part 1
    1. Introduction 00:03:01
    2. Using Java's Nimbus Look-and-Feel 00:03:44
    3. Simple GUI-Based Input/Output with JOptionPane 00:10:25
    4. Common superclasses of the lightweight Swing components 00:04:39
    5. Displaying Text and Images in a Window 00:25:25
    6. Text Fields and an Introduction to Event Handling with the ActionListener interface Nested Classes 00:27:58
    7. Common GUI Event Types and Listener Interfaces 00:11:17
    8. How Event Handling Works 00:04:50
    9. JButton 00:16:53
    10. Buttons That Maintain State: JCheckBox and the ItemListener interface 00:06:53
    11. Buttons That Maintain State: JRadioButton and the ItemListener interface 00:09:08
    12. JComboBox and the ItemListener interface; Using an Anonymous Inner Class for Event Handling 00:14:20
    13. JList and the ListSelectionListener interface 00:12:40
    14. Multiple-Selection Lists 00:06:58
    15. Mouse Event Handling with the MousListener and MouseMotionListener interfaces 00:20:56
    16. Adapter Classes in Event Handling: Mouse Event Handling with the MouseAdapter class 00:09:36
    17. Custom JPanels 00:10:27
    18. Key Event Handling 00:09:39
    19. FlowLayout 00:03:45
    20. BorderLayout 00:05:57
    21. GridLayout 00:04:52
    22. Using Panels to Manage More Complex Layouts 00:03:09
    23. JTextArea and JScrollPane 00:06:37
  19. Lesson 13: Graphics and Java 2D
    1. Introduction 00:01:50
    2. Color control: Drawing rectangles and strings in various colors 00:14:21
    3. Choosing colors with JColorChooser 00:06:45
    4. Displaying strings in different fonts and colors 00:04:50
    5. FontMetrics and Graphics methods useful for obtaining font metrics 00:03:50
    6. Drawing lines, rectangles and ovals 00:07:19
    7. Drawing arcs with Graphics methods drawArc and fillArc 00:04:54
    8. Drawing polygons with Graphics methods drawPolygon and fillPolygon 00:03:20
    9. Demonstrating Java 2D shapes 00:21:24
    10. Java 2D general paths and rotating/translating Java 2D shapes 00:06:41
  20. Lesson 14: Strings, Characters and Regular Expressions
    1. Introduction 00:01:27
    2. String class constructors 00:03:08
    3. String methods length, charAt and getChars 00:03:55
    4. Comparing Strings: String methods equals, equalsIgnoreCase, compareTo and regionMatches 00:08:53
    5. Comparing Strings: String methods startsWith and endsWith 00:02:12
    6. String-searching methods indexOf and lastIndexOf 00:03:50
    7. Extracting substrings from Strings: String class substring methods 00:01:40
    8. String method concat 00:01:48
    9. String methods replace, toLowerCase, toUpperCase, trim and toCharArray 00:03:40
    10. String valueOf methods 00:02:20
    11. StringBuilder constructors 00:02:37
    12. StringBuilder length, setLength, capacity and ensureCapacity methods 00:03:06
    13. StringBuilder methods charAt, setCharAt, getChars and reverse 00:02:50
    14. StringBuilder append methods 00:03:21
    15. StringBuilder methods insert, delete and deleteCharAt 00:02:18
    16. Character static methods for testing characters and converting case 00:04:04
    17. Character class static conversion methods 00:02:09
    18. Character class instance methods 00:02:44
    19. StringTokenizer object used to tokenize strings 00:01:39
    20. Validating user input with regular expressions 00:10:46
    21. String methods replaceFirst, replaceAll and split 00:06:12
    22. Classes Pattern and Matcher 00:03:42
  21. Lesson 15: Files, Streams and Object Serialization
    1. Introduction 00:02:07
    2. Obtaining file and directory information 00:11:53
    3. Writing data to a sequential text file with class Formatter 00:12:55
    4. Reading from a sequential text file using a Scanner 00:05:50
    5. Credit-inquiry program 00:07:07
    6. Creating a Sequential-Access File Using Object Serialization 00:15:04
    7. Reading and Deserializing Data from a Sequential-Access File 00:05:34
    8. Opening Files with JFileChooser 00:06:49
  22. Part III
    1. Learning Path: Professional Java Developer Introduction to Part III 00:13:28
  23. Lesson 16: Generic Collections
    1. Introduction 00:01:29
    2. Manipulating lists with List, ArrayList, Collection and Iterator 00:17:32
    3. Manipulating lists with List, LinkedList and ListIterator 00:12:58
    4. Viewing arrays as Lists and converting Lists to arrays 00:05:31
    5. Collections method sort 00:06:54
    6. Collections method sort with a Comparator object 00:02:37
    7. Collections method sort with a custom Comparator object 00:08:08
    8. Card shuffling and dealing with Collections method shuffle 00:05:35
    9. Collections methods reverse, fill, copy, max and min 00:05:32
    10. Collections method binarySearch 00:04:15
    11. Collections methods addAll, frequency and disjoint 00:04:04
    12. HashSet used to remove duplicate values from an array of strings 00:04:35
    13. Using SortedSets and TreeSets 00:04:34
    14. Using a Map to count the number of occurrences of each word in a String 00:09:00
  24. Lesson 17: Java SE 8 Lambdas and Streams
    1. Introduction 00:05:41
    2. Functional Programming 00:05:51
    3. Functional Interfaces 00:02:47
    4. Lambda Expressions 00:04:16
    5. Streams 00:03:20
    6. IntStream Operations: Creating an IntStream and Displaying Its Values with the forEach Terminal Operation 00:13:02
    7. IntStream Operations: Terminal Operations count, min, max, sum and average 00:09:42
    8. IntStream Operations: Terminal Operation reduce 00:06:49
    9. IntStream Intermediate Operations: Filtering and Sorting IntStream Values 00:09:41
    10. IntStream Intermediate Operation: Mapping 00:02:53
    11. IntStream Operations: Creating Streams of ints with IntStream Methods range and rangeClosed 00:01:34
    12. Stream<Integer> Manipulations 00:11:30
    13. Stream<String> Manipulations 00:10:38
    14. Stream<Employee> Manipulations: Creating and Displaying a List<Employee> 00:04:12
    15. Stream<Employee> Manipulations: Filtering Employees with Salaries in a Specified Range 00:09:15
    16. Stream<Employee> Manipulations: Sorting Employees By Multiple Fields 00:06:09
    17. Stream<Employee> Manipulations: Mapping Employees to Unique Last Name Strings 00:04:38
    18. Stream<Employee> Manipulations: Grouping Employees By Department 00:08:35
    19. Stream<Employee> Manipulations: Counting the Number of Employees in Each Department 00:05:08
    20. Stream<Employee> Manipulations: Summing and Averaging Employee Salaries 00:05:24
    21. Creating a Stream<String> from a File 00:13:12
    22. Generating Streams of Random Values: Rolling a die 6,000,000 times 00:09:25
    23. Lambda Event Handlers 00:05:25
    24. Additional Notes on Java SE 8 Interfaces 00:04:02
  25. Lesson 18: Generic Classes and Methods
    1. Introduction 00:02:46
    2. Overloaded method that perform the exact same task for different types 00:04:43
    3. Generic Methods: Implementation and Compile-Time Translation 00:06:13
    4. Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type 00:17:13
    5. Generic Classes: Implementing a Generic Stack Class 00:14:53
    6. Creating Generic Methods to Test Class Stack<T> 00:06:41
    7. Wildcards in Methods That Accept Type Parameters: Totaling the the numbers in an ArrayList<Number> 00:05:37
    8. Wildcards in Methods That Accept Type Parameters: Implementing Method sum with a Wildcard Type Argument in Its Parameter 00:04:24
  26. Lesson 19: GUI Components, Part 2
    1. Introduction 00:01:23
    2. JSlider 00:07:51
    3. Using menus with JFrames 00:18:08
    4. JPopupMenu 00:06:10
    5. Pluggable look-and-feel 00:08:29
    6. Multiple-document interfaces with JDesktopPane and JinternalFrame 00:09:37
    7. JTabbedPane 00:04:41
    8. BoxLayout layout manager 00:08:31
    9. GridBagLayout Layout Manager 00:13:11
    10. GridBagLayout Layout Manager: Using GridBagConstraints RELATIVE and REMAINDER 00:05:46
  27. Lesson 20: Concurrency and Multi-core Progamming
    1. Introduction 00:04:12
    2. Concurrent programming overview 00:12:22
    3. Thread States and Life Cycle 00:07:40
    4. Creating and Executing Threads with the Executor Framework 00:18:09
    5. Thread Synchronization Overview 00:07:16
    6. Unsynchronized Mutable Data Sharing (Not thread safe) 00:14:32
    7. Synchronized Mutable Data Sharing—Making Operations Atomic 00:06:11
    8. Producer/Consumer Relationship without Synchronization (Not thread safe) 00:15:41
    9. Producer/Consumer Relationship: ArrayBlockingQueue 00:12:53
    10. (Advanced) Producer/Consumer Relationship with synchronized, wait, notify and notifyAll 00:21:54
    11. (Advanced) Producer/Consumer Relationship: Bounded Buffers 00:13:38
    12. (Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces 00:15:26
    13. Performing Computations in a Worker Thread: Fibonacci Numbers 00:19:52
    14. Processing Intermediate Results: Sieve of Eratosthenes 00:16:35
    15. sort/parallelSort Timings with the Java SE 8 Date/Time API 00:08:37
    16. Java SE 8: Sequential vs. Parallel Streams 00:08:13
    17. Executing Aysnchronous Tasks with CompletableFuture--Fibonacci calculations performed synchronously and asynchronously 00:11:30
  28. Lesson 21: Accessing Databases with JDBC
    1. Introduction 00:01:20
    2. Overview of relational database concepts 00:01:06
    3. Overview of the books database 00:07:39
    4. Basic SELECT Query 00:01:24
    5. WHERE Clause 00:03:51
    6. ORDER BY Clause 00:04:09
    7. Merging Data from Multiple Tables: INNER JOIN 00:03:34
    8. INSERT Statement 00:01:29
    9. UPDATE Statement 00:02:09
    10. DELETE Statement 00:02:16
    11. Java DB Overview 00:05:03
    12. Connecting to and Querying a Database 00:15:14
    13. Querying the books Database: Test-Driving the Example 00:04:32
    14. Querying the books Database: Implementing the TableModel interface to populate a JTable from a ResultSet 00:12:28
    15. Querying the books Database: DisplayQueryResults class 00:08:24
    16. RowSet Interface and JdbcRowSet class 00:05:50
    17. PreparedStatements: Address book example 00:17:37
  29. Lesson 22: Java FX, Part 1
    1. Introduction 00:03:52
    2. Tools Used in This Lesson: FXML, JavaFX Scene Builder and the NetBeans IDE 00:06:00
    3. JavaFX App Window Structure 00:03:37
    4. Welcome App—Displaying Text and an Image 00:03:46
    5. Creating the App’s Project 00:04:21
    6. NetBeans Projects Window—Viewing the Project Contents and Adding an Image to the Project 00:02:11
    7. Opening JavaFX Scene Builder from NetBeans and Preparing to Build the Welcome App 00:05:24
    8. Changing to a VBox Layout Container and Configuring the Layout 00:03:04
    9. Adding and Configuring a Label 00:02:28
    10. Adding and Configuring an ImageView and Running the App 00:05:07
    11. Welcome.java--Creating the GUI from the FXML file 00:03:41
    12. Tip Calculator App Test Drive—Introduction to Event Handling 00:01:55
    13. Tip Calculator Technologies Overview 00:06:01
    14. Building the Tip Calculator App's GUI: fx:id values for the app's controls 00:03:28
    15. Building the Tip Calculator App's GUI: Creating the project 00:01:31
    16. Building the Tip Calculator App's GUI, Step 1: Changing the Root Layout from an AnchorPane to a GridPane 00:02:21
    17. Building the Tip Calculator App's GUI, Step 3: Adding the Controls to the GridPane 00:05:02
    18. Building the Tip Calculator App's GUI, Step 4: Right-Aligning GridPane Column 0’s Contents 00:00:49
    19. Building the Tip Calculator App's GUI, Step 5: Sizing the GridPane Columns to Fit Their Contents 00:00:57
    20. Building the Tip Calculator App's GUI, Step 7: Sizing the Button and Previewing the GUI 00:01:48
    21. Building the Tip Calculator App's GUI, Step 8: Configuring the GridPane’s Padding and Horizontal Gap Between Its Columns 00:03:15
    22. Building the Tip Calculator App's GUI, Step 9: Making the tipTextField and totalTextField Uneditable and Not Focusable 00:02:14
    23. Building the Tip Calculator App's GUI, Step 10: Setting the Slider’s Properties and Previewing the Final Layout 00:01:58
    24. TipCalculator Subclass of Application 00:07:31
    25. TipCalculatorController Class: import Statements 00:02:58
    26. TipCalculatorController Class: static Variables and Instance Variables 00:04:27
    27. TipCalculatorController Class: calculateButtonPressed Event Handler 00:04:02
    28. TipCalculatorController Class: initalize Method 00:08:01