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: Android App Developer

Video Description

Overview


This Learning Path includes Java Fundamentals LiveLessons, Part 1, and Android 6 App Development LiveLessons, Part 1 and 2.

Download the lesson files at http://www.deitel.com/bookresources/androidfp3/androidfp3_examples.zip

Prerequisites

  • Familiarity with the basics of software development projects.

Description


This online course is the professional programmer’s guide to Java SE 7 and SE 8 development. With 8+ hours of instruction, Java Fundamentals Part I applies the Deitel signature live-code approach to teaching and explores the language and APIs in depth. Concepts are presented in the context of fully tested programs. The course features hundreds of complete programs with thousands of lines of proven Java™ code along with hundreds of tips that will help you build robust applications.


Paul Deitel—best-selling author and Oracle® Java™ Champion—carefully introduces you to Android app development with key Android 6.0 features and APIs. You'll first learn how to install and configure Google's Android Studio IDE. Using the Deitel's signature App-Driven Approach in which all concepts are presented in the context of complete working apps, you'll then build seven Android apps that introduce everything you need to start creating your own—Welcome app, Tip Calculator app, Flag Quiz app, , Doodlz drawing app, Cannon Game app, WeatherViewer app, Twitter Searches app,  and Address Book app.  Along the way, you'll lean to master the Android APIs and FrameWorks needed to become a successful Android app developer.


About the Instructor 


Paul Deitel is the co-founder of Deitel & Associates, Inc., the internationally recognized programming languages authoring, corporate-training and Internet business development organization. Paul and his father—Harvey Deitel—have written many international best-selling programming-language professional books and textbooks that millions of people worldwide have used to master C++, C, Java™, C#, Visual Basic®, Visual C++®, XML, Perl, Python, and Internet and web programming.

Table of Contents

  1. Part I
    1. Android 6 App Development Fundamentals Part I: Introduction 00:12:00
  2. BeforeYouBegin: Setting Up Your Development Environment
    1. Intro 00:02:44
  3. Lesson 1:Test-Driving the Doodlz App
    1. Overview of Lesson 1 00:02:44
    2. Ensuring that the correct Android platform is installed 00:03:48
    3. Opening the Tip Calculator App's Project in Android Studio 00:04:12
    4. Creating Android Virtual Devices (AVDs) for testing Android apps 00:09:12
    5. Test-Driving the Doodlz App on an AVD 00:08:14
    6. Test-Driving the Doodlz App on a device 00:08:25
  4. Lesson 2: Welcome App
    1. Overview of Lesson 2 00:03:44
    2. Test-driving the Welcome app 00:07:08
    3. Technologies Overview 00:07:49
    4. Creating a new Android project 00:09:45
    5. Andoid Studio Window 00:07:19
    6. Adding an image to the Project 00:07:08
    7. Adding an App Icon 00:05:36
    8. Changing the RelativeLayout to a LinearLayout 00:03:38
    9. Configuring the LinearLayout's id and orientation Properties 00:03:03
    10. Configuring the TextView's id and text Properties 00:06:56
    11. Configuring the TextView's textSize Property 00:11:31
    12. Configuring the TextView's textColor Property 00:03:52
    13. Configuring the TextView's gravity Property 00:01:12
    14. Configuring the TextView's layout:gravity Property 00:01:10
    15. Configuring the TextView's layout:weight Property 00:02:29
    16. Adding an ImageView to Display the Image 00:09:53
    17. Testing the Completed Design on a Phone and a Tablet 00:03:41
    18. Making Your App Accessible 00:08:59
    19. Localizing the Welcome App for Spanish 00:15:56
    20. Executing the Localized App on an AVD and on a Device 00:08:05
  5. Lesson 3: Tip Calculator App
    1. Overview of Lesson 3 00:03:43
    2. Test-Driving the Tip Calculator App 00:03:37
    3. Technologies Overview: Class Activity 00:02:36
    4. Technologies Overview: Activity Lifecycle Methods 00:03:28
    5. Technologies Overview: AppCompat Library and class AppCompatActivity 00:04:08
    6. Technologies Overview: Arranging Views in a GridLayout; Creating and Customizing the GUI with the Layout Editor, the Component Tree and the Properties Window 00:01:58
    7. Technologies Overview: Formatting Numbers as Locale-Specific Currency and Percentage Strings 00:01:22
    8. Technologies Overview: Implementing Interface TextWatcher for Handling EditText Text Changes and Implementing Interface SeekBar.OnSeekBarChangeListener for Handling SeekBar Thumb Position Changes 00:00:58
    9. Technologies Overview: Material Themes 00:02:41
    10. Technologies Overview: Material Design--Elevation and Shadows 00:01:35
    11. Technologies Overview: Material Design--Colors 00:04:47
    12. Technologies Overview: AndroidManifest.xml 00:00:51
    13. GridLayout introduction 00:04:18
    14. Creating the TipCalculator Project 00:02:20
    15. Changing to a GridLayout 00:03:52
    16. Adding the TextViews, EditText and SeekBar: Adding Views to the First Row 00:09:23
    17. Adding the TextViews, EditText and SeekBar: Adding Views to the Second Row 00:02:41
    18. Adding the TextViews, EditText and SeekBar: Adding Views to the Third Row 00:02:53
    19. Adding the TextViews, EditText and SeekBar: Adding Views to the Fourth Row 00:02:49
    20. Customizing the Views: Specifying Literal Text 00:05:48
    21. Customizing the Views: Right Aligning TextViews in the Left Column 00:02:27
    22. Customizing the Views: Configuring the amountEditText 00:02:58
    23. Customizing the Views: Configuring the amountTextView 00:05:14
    24. Customizing the Views: Configuring the percentTextView 00:02:06
    25. Customizing the Views: Configuring the percentSeekBar 00:04:08
    26. Customizing the Views: Configuring the tipTextView and totalTextView 00:04:26
    27. Customizing the Theme's Primary, Primary Dark and Accent Colors 00:06:24
    28. Adding the App's Logic: package and import Statements 00:05:30
    29. Adding the App's Logic: MainActivity Subclass of AppCompatActivity 00:03:03
    30. Adding the App's Logic: Class Variables and Instance Variables 00:03:13
    31. Adding the App's Logic: Overridding Activity Method onCreate 00:09:31
    32. Adding the App's Logic: MainActivity Method calculate 00:01:50
    33. Adding the App's Logic: Anonymous Inner Class That Implements Interface OnSeekBarChangeListener 00:03:51
    34. Adding the App's Logic: Anonymous Inner Class That Implements Interface TextWatcher 00:02:54
    35. AndroidManifest.xml: Setting Portrait Mode and Forcing the Keypad to Display 00:09:03
  6. Lesson 4: Flag Quiz Game App
    1. Overview of Lesson 4 00:06:03
    2. Test-Driving the Flag Quiz App 00:07:20
    3. Technologies Overview: Menus 00:03:19
    4. Technologies Overview: Fragments 00:04:09
    5. Technologies Overview: Fragment Lifecycle 00:03:08
    6. Technologies Overview: Managing Fragments 00:01:46
    7. Technologies Overview: Preferences 00:03:31
    8. Technologies Overview: assets Folder 00:02:48
    9. Technologies Overview: Resource Folders 00:02:39
    10. Technologies Overview: Supporting Different Screen Sizes and Resolutions 00:02:03
    11. Technologies Overview: Programmatically Determining Device Orientation 00:01:38
    12. Technologies Overview: Toasts for Displaying Messages 00:01:15
    13. Technologies Overview: Using a Handler to Execute a Runnable in the Future 00:01:37
    14. Technologies Overview: Applying an Animation to a View 00:01:06
    15. Technologies Overview: Using ViewAnimationUtils to Create a Circular Reveal Animator 00:02:04
    16. Technologies Overview: Specifying Colors Based on a View's State Via a Color State List 00:02:29
    17. Technologies Overview: AlertDialog 00:03:22
    18. Technologies Overview: Logging Exception Messages 00:02:15
    19. Technologies Overview: Launching Another Activity Via an Explicit Intent 00:07:44
    20. Technologies Overview: Java Data Structures 00:00:33
    21. Technologies Overview: Java SE 7 Features 00:01:10
    22. Technologies Overview: AndroidManifest.xml--Declaring New Activities and Specifying the Launch Mode of an Activity 00:00:51
    23. Creating the Flag Quiz Project 00:06:41
    24. Blank Activity Template Layouts 00:07:33
    25. Configuring Java SE 7 Support 00:01:03
    26. Adding the Flag Images to the Project 00:05:03
    27. strings.xml and Formatted String Resources 00:06:52
    28. arrays.xml 00:07:57
    29. colors.xml 00:04:46
    30. button_text_color.xml: Defining a Color State List 00:05:33
    31. Editing menu_main.xml 00:09:50
    32. Creating a Flag Shake Animation 00:05:12
    33. preferences.xml for Specifying the App's Default Settings 00:08:10
    34. Adding Classes SettingsActivity and SettingsActivityFragment 00:05:07
    35. activity_main.xml Layout for Devices in Portrait Orientation 00:01:24
    36. Designing fragment_main.xml 00:01:34
    37. Designing fragment_main.xml: Step 1, Changing from a RelativeLayout to a LinearLayout 00:02:10
    38. Designing fragment_main.xml: Step 2, Adding the questionNumberTextView to the LinearLayout 00:03:06
    39. Designing fragment_main.xml: Step 3, Adding the flagImageView to the LinearLayout 00:05:10
    40. Designing fragment_main.xml: Step 4, Adding the guessCountryTextView to the LinearLayout 00:02:02
    41. Designing fragment_main.xml: Step 5, Adding the Buttons to the LinearLayout 00:04:37
    42. Designing fragment_main.xml: Step 6, Adding the answerTextView to the LinearLayout 00:04:25
    43. Designing fragment_main.xml: Step 7, Setting the Properties of the Buttons 00:06:14
    44. content_main.xml Layout for Tablet Landscape Orientation: Creating the Tablet Layout 00:05:05
    45. content_main.xml Layout for Tablet Landscape Orientation: Creating the Tablet Layout's GUI 00:05:40
    46. content_main.xml Layout for Tablet Landscape Orientation: Selecting a Fragment to Preview in the Layout Editor's Design View 00:02:14
    47. MainActivity Class: package Statement and Import Statements 00:04:52
    48. MainActivity Class: Fields 00:01:41
    49. MainActivity Class: Overridden Activity Method onCreate 00:07:09
    50. MainActivity Class: Overridden Activity Method onStart 00:06:15
    51. MainActivity Class: Overridden Activity Method onCreateOptionsMenu 00:03:34
    52. MainActivity Class: Overridden Activity Method onOptionsItemSelected 00:04:11
    53. MainActivity Class: Anonymous Inner Class That Implements OnSharedPreferencesChangeListener 00:07:25
    54. MainActivityFragment Class: package Statement and import Statements 00:04:44
    55. MainActivityFragment Class: Fields 00:05:48
    56. MainActivityFragment Class: Overridden Fragment Method onCreateView 00:15:20
    57. MainActivityFragment Class: Methods updateGuessRows 00:03:56
    58. MainActivityFragment Class: Method updateRegions 00:01:01
    59. MainActivityFragment Class: Method resetQuiz 00:05:29
    60. MainActivityFragment Class: Method loadNextFlag 00:08:04
    61. MainActivityFragment Class: Method getCountryName 00:01:08
    62. MainActivityFragment Class: Method animate 00:03:54
    63. MainActivityFragment Class: Anonymous Inner Class That Implements OnClickListener 00:09:15
    64. MainActivityFragment Class: Method disableButtons 00:00:51
    65. SettingsActivity Class 00:03:33
    66. SettingsActivityFragment Class 00:02:17
    67. AndroidManifest.xml: Declaring Other Activities and Configuring the Launch Mode 00:04:57
  7. Part II
    1. Android 6 App Development Fundamentals Part II: Introduction 00:17:45
  8. Lesson 5: Doodlz App
    1. Overview of Lesson 5 00:04:35
    2. Test-Driving the Doodlz App 00:06:13
    3. Technologies Overview: Activity and Fragment Lifecycle Methods 00:02:17
    4. Technologies Overview: Custom Views 00:01:25
    5. Technologies Overview: Using SensorManager to Listen for Accelerometer Events 00:01:26
    6. Technologies Overview: Custom DialogFragments 00:02:10
    7. Technologies Overview: Drawing with Canvas, Paint and Bitmap 00:00:52
    8. Technologies Overview: Processing Multiple Touch Events and Storing Lines in Paths 00:03:26
    9. Technologies Overview: Saving to the Device 00:01:09
    10. Technologies Overview: Printing and the Android Support Library's PrintHelper Class 00:00:58
    11. Technologies Overview: Android 6.0 (Marshmallow) Permissions Model 00:01:47
    12. Technologies Overview: Adding Dependences to a Project Using Gradle 00:01:01
    13. Creating the Doodlz Project and Adding the App Icon 00:02:26
    14. Removing unused GUI Components and Code, and Changing the Theme Colors 00:03:25
    15. Gradle: Adding a Support Library to the Project 00:04:25
    16. strings.xml 00:03:30
    17. Importing the Material Design Icons for the App's Menu Items 00:01:59
    18. MainActivityFragment Menu 00:09:54
    19. Adding a Permission to AndroidManifest.xml 00:02:21
    20. content_main.xml Layout for MainActivity 00:01:02
    21. fragment_main.xml Layout for MainActivityFragment 00:06:40
    22. fragment_color.xml Layout for ColorDialogFragment 00:11:35
    23. fragment_line_width.xml Layout for LineWidthDialogFragment 00:03:55
    24. Adding Class EraseImageDialogFragment 00:01:09
    25. MainActivity Class 00:02:51
    26. MainActivityFragmentclass: package Statement, import Statements and Fields 00:03:52
    27. MainActivityFragmentclass: Overridden Fragment Method onCreateView 00:03:36
    28. MainActivityFragmentclass: Overridden Fragment Method onResume and Method enableAccelerometerListening 00:06:44
    29. MainActivityFragmentclass: Overridden Fragment Method onPause and Method disableAccelerometerListening 00:01:22
    30. MainActivityFragmentclass: Anonymous Inner Class for Processing Accelerometer Events 00:03:57
    31. MainActivityFragmentclass: Method confirmErase 00:01:18
    32. MainActivityFragmentclass: Overridden Fragment Methods onCreateOptionsMenu and onOptionsItemSelected 00:03:05
    33. MainActivityFragmentclass: Method saveImage 00:05:29
    34. MainActivityFragmentclass: Overridden Method onRequestPermissionResult 00:03:32
    35. MainActivityFragmentclass: Methods getDoodleView and setDialogOnScreen 00:01:42
    36. DoodleView.java--package Statement and import Statements 00:02:40
    37. DoodleView.java--DoodleView static and Instance Variables 00:03:21
    38. DoodleView.java--DoodleView Constructor 00:02:43
    39. DoodleView.java--Overridden View Method onSizeChanged 00:03:09
    40. DoodleView.java--DoodleView Methods clear, setDrawingColor, getDrawingColor, setLineWidth and getLineWidth 00:02:30
    41. DoodleView.java--Overridden View Method onDraw 00:02:35
    42. DoodleView.java--Overridden View Method onTouchEvent 00:05:26
    43. DoodleView.java--touchStarted Method of Class DoodleView 00:02:35
    44. DoodleView.java--touchMoved Method of Class DoodleView 00:03:45
    45. DoodleView.java--touchEnded Method of Class DoodleView 00:00:56
    46. DoodleView.java--DoodleView Method saveImage 00:03:39
    47. DoodleView.java--DoodleView Method printImage 00:01:44
    48. ColorDialogFragment.java--package Statement, import Statements and Fields 00:01:37
    49. ColorDialogFragment.java--Overridden DialogFragment Method onCreateDialog 00:04:52
    50. ColorDialogFragment.java--Method getDoodleFragment 00:01:19
    51. ColorDialogFragment.java--Fragment Lifecycle Methods onAttach and onDetach 00:02:08
    52. ColorDialogFragment.java--Anonymous Inner Class That Responds to the Events of the Alpha, Red, Green and Blue SeekBars 00:02:08
    53. LineWidthDialogFragment Class 00:04:41
    54. EraseImageDialogFragment Class 00:02:47
  9. Lesson 6: Cannon Game App
    1. Overview of Lesson 6 00:04:11
    2. Test-Driving the Cannon Game App 00:02:38
    3. Technologies Overview--Using the res/raw folder 00:00:49
    4. Technologies Overview--Activity/Fragment onDestroy Method 00:01:11
    5. Technologies Overview--Touch event handling 00:00:28
    6. Technologies Overview--SoundPool and AudioManager 00:01:43
    7. Technologies Overview--Frame-by-Frame Animation with Threads, SurfaceView and SurfaceHolder 00:04:05
    8. Technologies Overview--Simple Collision Detection 00:01:22
    9. Technologies Overview--Immersive Mode 00:01:14
    10. Creating the Project and Setting the App for Landscape Orientation 00:03:15
    11. Adjusting the Theme to Remove the App Title and App Bar 00:02:15
    12. strings.xml 00:01:52
    13. Colors 00:01:13
    14. Adding Sounds to the App 00:01:37
    15. Adding Class MainActivityFragment 00:02:47
    16. Editing activity_main.xml 00:02:43
    17. Adding the CannonView to fragment_main.xml 00:06:38
    18. Overview of This App's Classes 00:02:27
    19. MainActivity Subclass of AppCompatActivity 00:00:47
    20. MainActivityFragment Subclass of Fragment 00:04:33
    21. Class GameElement--Instance Variables and Constructor 00:03:46
    22. Class GameElement--Methods update, draw and playSound 00:03:21
    23. Blocker Subclass of GameElement 00:01:49
    24. Target Subclass of GameElement 00:01:19
    25. Cannon Class--Instance Variables and Constructor 00:03:20
    26. Cannon Class--Method align 00:01:53
    27. Cannon Class--Method fireCannonball 00:04:13
    28. Cannon Class--Method draw 00:01:53
    29. Cannon Class--Methods getCannonball and removeCannonball 00:00:37
    30. Cannonball Subclass of GameElement--Instance Variables and Constructor 00:02:02
    31. Cannonball Subclass of GameElement--Methods getRadius, collidesWith, isOnScreen and reverseVelocityX 00:02:49
    32. Cannonball Subclass of GameElement--Method update 00:02:27
    33. Cannonball Subclass of GameElement--Method draw 00:01:25
    34. CannonView Subclass of SurfaceView--package and import Statements 00:00:43
    35. CannonView Subclass of SurfaceView--Instance Variables and Constants 00:05:43
    36. CannonView Subclass of SurfaceView--Constructor 00:07:00
    37. CannonView Subclass of SurfaceView--Overriding View Method onSizeChanged 00:01:29
    38. CannonView Subclass of SurfaceView--Methods getScreenWidth, getScreenHeight and playSound 00:03:32
    39. CannonView Subclass of SurfaceView--Method newGame 00:06:51
    40. CannonView Subclass of SurfaceView--Method updatePositions 00:02:15
    41. CannonView Subclass of SurfaceView--Method alignAndFireCannonball 00:02:32
    42. CannonView Subclass of SurfaceView--Method showGameOverDialog 00:05:36
    43. CannonView Subclass of SurfaceView--Method drawGameElements 00:01:56
    44. CannonView Subclass of SurfaceView--Method testForCollisions 00:03:09
    45. CannonView Subclass of SurfaceView--Methods stopGame and releaseResources 00:01:02
    46. CannonView Subclass of SurfaceView--Implementing the SurfaceHolder.Callback Methods 00:03:23
    47. CannonView Subclass of SurfaceView--Overriding View Method onTouchEvent 00:01:27
    48. CannonView Subclass of SurfaceView--CannonThread: Using a Thread to Create a Game Loop 00:06:23
    49. CannonView Subclass of SurfaceView--Methods hideSystemBars and showSystemBars 00:02:47
  10. Lesson 7: WeatherViewer App
    1. Overview of Lesson 7 00:07:42
    2. Test-Driving the WeatherViewer App 00:08:07
    3. Technologies Overview--Web Services 00:07:08
    4. Technologies Overview--JavaScript Object Notation (JSON) and the org.json Package 00:07:38
    5. Technologies Overview--HttpUrlConnection Invoking a REST Web Service 00:01:13
    6. Technologies Overview--Using AsyncTask to Perform Network Requests Outside the GUI Thread 00:02:04
    7. Technologies Overview--ListView, ArrayAdapter and the View-Holder pattern 00:05:29
    8. Technologies Overview--FloatingActionButton 00:02:08
    9. Technologies Overview--TextInputLayout 00:01:20
    10. Technologies Overview--Snackbar 00:01:35
    11. Creating the Project 00:03:20
    12. AndroidManifest.xml--Setting the Orientation and Permissions 00:03:30
    13. strings.xml 00:04:10
    14. colors.xml 00:00:53
    15. Editing activity_main.xml 00:07:03
    16. Editing content_main.xml 00:06:01
    17. Creating list_item.xml 00:09:09
    18. Weather Class: package Statement, import Statements and Instance Variables 00:01:57
    19. Weather Class: Constructor 00:02:54
    20. Weather Class: Method convertTimeStampToDay 00:02:35
    21. WeatherArrayAdapter Class: package and import Statements 00:03:33
    22. WeatherArrayAdapter Class: Nested Class ViewHolder 00:02:19
    23. WeatherArrayAdapter Class: Instance Variable and Constructor 00:02:40
    24. WeatherArrayAdapter Class: Overridden ArrayAdapter Method getView 00:09:58
    25. WeatherArrayAdapter Class: Nested AsyncTask Subclass for Downloading Images in a Separate Thread 00:07:50
    26. MainActivity Class: package and import Statements 00:02:29
    27. MainActivity Class: Instance Variables 00:00:47
    28. MainActivity Class: Overridden Activity Method onCreate 00:04:28
    29. MainActivity Class: Methods dismissKeyboard and createUrl 00:04:32
    30. MainActivity Class: Nested AsyncTask Subclass for Invoking a Web Service 00:05:52
    31. MainActivity Class: Method convertJSONtoArrayList 00:04:34
  11. Lesson 8: Twitter Searches App
    1. Overview of Lesson 8 00:05:25
    2. Test-Driving the Twitter Searches App 00:10:56
    3. Technologies Overview--Storing Key-Value Data in a SharedPreferences File 00:01:09
    4. Technologies Overview--Implicit Intents and Intent Choosers 00:01:57
    5. Technologies Overview--RecyclerView 00:01:41
    6. Technologies Overview--RecyclerView.Adapter and RecyclerView.ViewHolder 00:01:27
    7. Technologies Overview--RecyclerView.ItemDecoration 00:00:37
    8. Technologies Overview--Displaying a List of Options in an AlertDialog 00:00:59
    9. Creating the Twitter Searches Project 00:02:40
    10. AndroidManifest.xml--Prevent Keyboard from Displaying Initially 00:02:31
    11. Adding the RecyclerView Library to the Project. 00:01:59
    12. colors.xml 00:01:39
    13. strings.xml 00:02:43
    14. arrays.xml 00:01:36
    15. dimens.xml 00:02:24
    16. Adding the Save Button Icon 00:03:00
    17. activity_main.xml--Customizing the FloatingActionButton 00:04:39
    18. content_main.xml Step 1--Adding the queryTextInputLayout and Its Nested EditText 00:06:39
    19. content_main.xml Step 2--Adding the tagTextInputLayout and Its Nested EditText 00:03:47
    20. content_main.xml Step 3--Adding the LinearLayout 00:02:21
    21. content_main.xml Step 4--Adding the LinearLayout's Nested TextView and RecyclerView 00:06:31
    22. RecyclerView Item's Layout--list_item.xml 00:05:21
    23. MainActivity.java--package and import statements 00:02:24
    24. MainActivity.java--Fields 00:03:15
    25. MainActivity.java--Overriding Activity Method onCreate 00:10:20
    26. MainActivity.java--TextWatcher Event Handler and Method updateSaveFAB 00:02:23
    27. MainActivity.java--saveButton's OnClickListener 00:02:37
    28. MainActivity.java--addTaggedSearch Method 00:02:22
    29. MainActivity.java--Anonymous Inner Class that Implements the ListView's OnItemClickListener to Display Search Results 00:06:24
    30. MainActivity.java--Anonymous Inner Class that Implements the View.OnItemLongClickListener to Share, Edit or Delete a Search 00:05:43
    31. MainActivity.java--shareSearch Method 00:04:06
    32. MainActivity.java--deleteSearch Method 00:02:46
    33. SearchesAdapter.java--package Statement, import Statements, Instance Variables and Constructor 00:03:44
    34. SearchesAdapter.java--Nested ViewHolder Subclass of RecyclerView.ViewHolder 00:02:23
    35. SearchesAdapter.java--Overridden RecyclerView.Adapter Methods 00:03:19
    36. ItemDivider.java--ItemDivider Subclass of RecyclerView.ItemDecoration 00:08:41
  12. Lesson 9: AddressBook App
    1. Overview of Lesson 9 00:07:53
    2. Test-Driving the Address Book App 00:05:22
    3. Technologies Overview--Displaying Fragments with FragmentTransactions 00:02:23
    4. Technologies Overview--Communicating Data Between a Fragment and a Host Activity 00:02:48
    5. Technologies Overview--Manipulating a SQLite Database 00:01:12
    6. Technologies Overview--ContentProviders and ContentResolvers 00:05:04
    7. Technologies Overview--Loader and LoaderManager: Asynchronous Database Access 00:02:52
    8. Technologies Overview--Defining Styles and Applying Them to GUI Components 00:01:36
    9. Technologies Overview--Specifying a TextView's Background 00:01:28
    10. Creating the Project 00:03:10
    11. Creating the App's Classes 00:09:02
    12. Adding the App's Icons 00:02:47
    13. strings.xml 00:03:57
    14. Defining common look-and-feel: styles.xml 00:07:46
    15. Defining a TextView Border: textview_border.xml 00:06:24
    16. MainActivity's content_main.xml for Phones and Tablets 00:16:46
    17. ContactsFragment's Layout: fragment_Contacts.xml 00:04:50
    18. DetailFragment's Layout: fragment_details.xml 00:07:30
    19. AddEditFragment's Layout: fragment_add_edit.xml 00:12:05
    20. Defining DetailFragment Menu 00:05:10
    21. Overview of This App's Classes 00:08:50
    22. DatabaseDescription Class 00:07:14
    23. AddressBookDatabaseHelper Class 00:07:27
    24. AddressBookContentProvider Class--Fields 00:07:15
    25. AddressBookContentProvider Class--Overridden Methods onCreate and getType 00:02:21
    26. AddressBookContentProvider Class--Overridden Method query 00:09:46
    27. AddressBookContentProvider Class--Overridden Method insert 00:05:28
    28. AddressBookContentProvider Class--Overridden Method update 00:04:11
    29. AddressBookContentProvider Class--Overridden Method delete 00:02:57
    30. MainActivity.java--Superclass, Implemented Interfaces and Fields 00:03:53
    31. MainActivity.java--Overridden Activity Method onCreate 00:06:51
    32. MainActivity.java--ContactsFragment.ContactsFragmentListener Methods 00:04:34
    33. MainActivity.java--Method displayContact 00:04:57
    34. MainActivity.java--Method displayAddEditFragment 00:02:39
    35. MainActivity.java--DetailFragment.DetailFragmentListener Methods 00:01:59
    36. MainActivity.java--AddEditFragment.AddEditFragmentListener Methods 00:01:38
    37. ContactsFragment.java--Superclass and Implemented Interface 00:01:30
    38. ContactsFragment.java--ContactsFragmentListener Nested Interface 00:01:22
    39. ContactsFragment.java--Fields 00:01:27
    40. ContactsFragment.java--Overridden Fragment Method onCreateView 00:03:04
    41. ContactsFragment.java--Overridden Fragment Methods onAttach and onDetach 00:01:32
    42. ContactsFragment.java--Overridden Fragment Method onActivityCreated 00:02:58
    43. ContactsFragment.java--Method updateContactList 00:02:58
    44. ContactsFragment.java--LoaderManager.LoaderCallbacks<Cursor> Methods 00:06:41
    45. ContactAdatper Class 00:10:51
    46. AddEditFragment.java--Superclass and Implemented Interface 00:00:55
    47. AddEditFragment.java--AddEditFragmentListener Nested Interface 00:00:33
    48. AddEditFragment.java--Fields 00:01:59
    49. AddEditFragment.java--Overridden Methods onAttach, onDetach and onCreateView 00:04:59
    50. AddEditFragment.java--TextWatcher nameChangedListener and Method updateSaveButtonFAB 00:02:02
    51. AddEditFragment.java--View.OnClickListener saveContactButtonClicked and Method saveContact 00:06:44
    52. AddEditFragment.java--LoaderManager.LoaderCallbacks<Cursor> Methods 00:02:51
    53. DetailFragment.java--Superclass and Implemented Interface 00:00:46
    54. DetailFragment.java--DetailFragmentListener Nested Interface 00:00:41
    55. DetailFragment.java--Fields 00:00:47
    56. DetailFragment.java--Overridden Methods onAttach, onDetach and onCreateView 00:01:50
    57. DetailFragment.java--Overridden Methods onCreateOptionsMenu and onOptionsItemSelected 00:01:31
    58. DetailFragment.java--Method deleteContact and DialogFragment confirmDelete 00:02:18
    59. DetailFragment.java--LoaderManager.LoaderCallbacks<Cursor> Methods 00:02:18
  13. Part I
    1. Java Fundamentals I, II, and III LiveLessons: Introduction to Part I 00:11:05
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. Lesson 3: Introduction to Classes, Objects, Methods and Strings
    1. Introduction 00:02:59
    2. Account class that contains a name instance variable and methods to set and get its value 00:16:25
    3. Creating and manipulating an Account object 00:16:03
    4. Conceptual view of an Account object 00:03:36
    5. Account class with a constructor that initializes the name instance variable 00:04:53
    6. Using the Account constructor to initialize the name instance variable when each Account object is created 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. Part II
    1. Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part II 00:16:26
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. Part III
    1. Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part III 00:13:28
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. Lesson 23: Java FX GUI: Part 2
    1. Lesson Introduction 00:03:19
    2. NetBeans and JavaFX Scene Builder Downloads 00:00:49
    3. Laying Out Nodes in a Scene Graph 00:05:09
    4. Painter App: Technologies Overview 00:05:03
    5. Painter App: Creating the Project and Building the GUI 00:17:21
    6. Painter App: Painter Subclass of Application 00:01:45
    7. Painter App: PainterController Class 00:11:37
    8. Color Chooser App: Technologies Overview 00:05:02
    9. Color Chooser App: GUI Overview 00:04:12
    10. Color Chooser App: ColorChooser and ColorChooserController classes 00:07:46
    11. Cover Viewer App: Technologies Overview 00:03:13
    12. Cover Viewer App: Adding the Images and the Book class; GUI Overview 00:04:16
    13. Cover Viewer App: CoverViewer and CoverViewerController classes 00:06:06
    14. Cover Viewer App: Customizing ListView Cells Technologies Overview 00:02:38
    15. Cover Viewer App: Copying the Project 00:01:40
    16. Cover Viewer App: ImageTextCell Custom Cell Factory Class 00:08:22
    17. Cover Viewer App: CoverViewerController Class 00:02:21