Richard G Baldwin Programming Tutorials

Advanced Java Programming Tutorial 



Table of Contents

If you find the links to any of my tutorials broken, you might try either:

  1. Going to Google or Bing and searching the web for pages having the same title, or

  2. Going to More articles by Richard G. Baldwin at Developer.com and searching that page for the tutorial by title.

One of those two options is almost certain to lead you to a copy of the tutorial.

The New Face of Computer Science Education - The Scratch Generation

All Java Tutorials at Gamelan.com

124 Swing, Hidden Buttons with Icons, Icon Images, Borders, Tool Tips, Nested Buttons, and Other Fun Stuff 
130 The Container, Panel, Window, and Frame Classes 
132 The Button, Checkbox, Choice, and List Classes 
134 The TextField, TextArea, and Label Classes 
___ Scrollbar Class (see Lesson 090 and Lesson 110) 
138 The Dialog Class 
140 Ordinary Menus 
142 Checkbox Menus 
144 Popup Menus 
146 The Canvas Component 
160 Graphics - Getting Started 
162 Graphics and Colors, An Overview 
164 Graphics - The Utility Methods 
166 Graphics - Working with Shapes 
168 Graphics - Working with Fonts 
170 Graphics - Introduction to Images 
172 Graphics - Animation and Double Buffering 
174 Graphics - Overview of Advanced Image Processing Capabilities 
176 Lightweight Components, A Lightweight 3D Button Class 
178 Lightweight Components, Exercising the Lightweight 3D Button Class 
180 Lightweight Components, A Named Inner-Class Source/Listener Version of the Lightweight 3D Button Class. 
182 Lightweight Components, An Anonymous Inner-Class Source/Listener Version of the Lightweight 3D Button Class.
190 Swing, Creating and Using Trees 
191 Swing, Custom Rendering of Tree Nodes
200 Implementing the Model-View-Controller Paradigm using Observer and Observable 
209 Swing, Simplified Lists in Swing
210 Swing, Understanding Component MVC Models
211 Swing, Custom Rendering of JList Cells
212 Swing, Custom List Selection Model for JList Objects
250 Object Serialization, A First Look 
252 Object Serialization, Saving/Restoring a GUI Context with Inner Classes 
260 Reflection and the Method Class - I 
261 Reflection and the Method Class - II 
262 Reflection and the Method Class - III 
270 Using Reflection with Object Serialization and Retrieved Objects 
...

Java 2D Graphics
300 Java 2D Graphics, Nested Top-Level Classes and Interfaces 
302 Java 2D Graphics, The Point2D Class 
304 Java 2D Graphics, The Graphics2D Class 
306 Java 2D Graphics, Simple Affine Transforms 
308 Java 2D Graphics, The Shape Interface, Part 1 
310 Java 2D Graphics, The Shape Interface, Part 2 
312 Java 2D Graphics, Solid Color Fill 
314 Java 2D Graphics, Gradient Color Fill 
316 Java 2D Graphics, Texture Fill 
318 Java 2D Graphics, The Stroke Interface 
320 Java 2D Graphics, The Composite Interface and Transparency 
322 Java 2D Graphics, The Composite Interface, GradientPaint, and Transparency 
324 Java 2D Graphics, The Color Constructors and Transparency 
...

Multimedia Programming with Java
340 Getting Started
342 Getting Started with the Turtle Class
344 Continuing with the SimpleTurtle Class
346 Wrapping Up the SimpleTurtle Class
348 The Pen and PathSegment Classes
349 A Pixel Editor Program in Java
350 3D Displays, Color Distance, and Edge Detection
351 A Slider-Controlled Softening Program for Digital Photos
352 Adding Animated Movement to Your Java Application
353 A Slider-Controlled Sharpening Program for Digital Photos
354 The DigitalPicture Interface
355 The HSB Color Model
356 The show Method and the PictureFrame Class
357 An HSB Color-Editing Program for Digital Photos
358 Applying Affine Transforms to Picture Objects
359 Creating a lasso for editing digital photos in Java
360 Wrapping Up the SimplePicture Class
361 A Temperature and Tint Editing Program for Digital Photos
362 Getting Started with the PictureExplorer Class
363 Redeye Correction in Digital Photographs
364 Building the Information Panel for the PictureExplorer GUI
365 Using Flood-Fill in Java Programs
366 Displaying an Image in a PictureExplorer Object
See more Multimedia Programming at http://www.dickbaldwin.com/tocmed.htm 
...

Processing Image Pixels
400 Processing Image Pixels using Java, Getting Started 
402 Processing Image Pixels using Java, Creating a Spotlight 
404 Processing Image Pixels Using Java: Controlling Contrast and Brightness
406 Processing Image Pixels, Color Intensity, Color Filtering, and Color Inversion
408 Processing Image Pixels, Performing Convolution on Images
410 Processing Image Pixels, Understanding Image Convolution in Java
412 Processing Image Pixels, Applying Image Convolution in Java, Part 1
414 Processing Image Pixels, Applying Image Convolution in Java, Part 2
416 Processing Image Pixels, An Improved Image-Processing Framework in Java
418 Processing Image Pixels, Creating Visible Watermarks in Java
450 A Framework for Experimenting with Java 2D Image-Processing Filters
452 Using the Java 2D LookupOp Filter Class to Process Images
454 Using the Java 2D AffineTransformOp Filter Class to Process Images
456 Using the Java 2D LookupOp Filter Class to Scramble and Unscramble Images
458 Using the Java 2D BandCombineOp Filter Class to Process Images
460 Using the Java 2D ConvolveOp Filter Class to Process Images
462 Using the Java 2D ColorConvertOp and RescaleOp Filter Classes to Process Images
...

JavaBeans Components
500 JavaBeans, An Overview 
502 JavaBeans, A Skeleton Bean Program 
504 JavaBeans, A Skeleton Bean in the Beanbox 
506 JavaBeans, Introspection 
508 JavaBeans, Properties of Beans, Simple and Indexed 
510 JavaBeans, Properties of Beans, Bound Properties 
512 JavaBeans, Properties of Beans, Constrained Properties 
...

Network Programming
550 Network Programming - General Information 
552 Network Programming - The InetAddress Class 
554 Network Programming - The URL Class and the URLEncoder Class 
556 Network Programming - The URLConnection Class 
560 Network Programming - Sockets 
562 Network Programming - Server Sockets 
564 Network Programming - Datagram Clients 
566 Network Programming - Datagram Servers 
568 Network Programming - Stubs, Skeletons, and Remote Objects 
...

RMI
600 RMI, Introduction to Remote Method Invocation
601 RMI with Multiple Objects of the Same Type Having Multiple Methods
602 RMI with Multiple Objects of Different Types Having Multiple Methods
603 RMI, Passing and Returning Remote and Ordinary Objects
...

CORBA
620 CORBA, Introduction to Common Object Request Broker Architecture
624 CORBA, Java IDL, Under the Hood
628 CORBA, IDLs with Multiple Modules Having Interfaces with Multiple Operations
632 CORBA, Using Stringified Object References in Java
636 CORBA, Passing References to Remote Objects -- Callback Methods
640 CORBA, Stringified Object References and FTP Servers
644 CORBA, Passing Parameters to Remote Methods
...

JDBC and Servlets
660 JDBC, Introduction to JDBC and Database Access
662 Using JDBC with MySQL, Getting Started
679 Getting Started with Jakarta Tomcat, Servlets, and JSP (Also see 696 under Ajax below.)
680 Servlets, Introduction to Servlets
682 Servlets, Forms, and Databases
684 Servlets, Server-Side Includes
686 Servlets, They Can Remember
688 Servlets and the JDBC ResultSetMetaData Interface
690 Servlets, Originating Email in Servlets
691 Servlets, Session Tracking Using Hidden Fields
692 Servlets, Session Tracking Using URL Rewriting
693 Servlets, Session Tracking Using Cookies
694 Servlets, Session Tracking Using the Session Tracking API
695 Servlets, Session Tracking Using Basic Authentication
...

Security
700 Security, A Very Brief Introduction 
702 Security, Overview of Security in JDK 1.2 
705 Security, Servlets, Using Basic Authentication 
710 Security, Introduction to Message Digests 
711 Security, Passphrase Protected Message Digests 
712 Security, Message Digest Streams 
714 Security, Introduction to Symmetric-Key Cryptography 
715 Security, Policy Files in JDK 1.2 
720 Security, Introduction to Key Pairs and Digital Signatures 
725 Security, Digital Certificates 
727 Public Key Cryptography 101 Using Java 
728 Digital Signatures 101 using Java
729 Message Digests 101 using Java
730 Digital Signatures using Message Digests with Java
731 Signing Messages using Redundancy Functions in Java
732 Steganography 101 using Java
734 Wireless Home Security and Java
...

JavaServer Pages
750 JavaServer Pages, Introduction to JSP 
752 JavaServer Pages, Comments, Declaration, and Expressions 
754 JavaServer Pages, Scriptlets 
756 JavaServer Pages, The Include Directive 
758 JavaServer Pages, The Page Directive 
760 JavaServer Pages, <jsp.forward> 
762 JavaServer Pages and JavaBean Components, Part I 
764 JavaServer Pages and JavaBean Components, Part II 
766 JavaServer Pages and JavaBean Components, Part III 
...

XML
820 Programming with HTML, XML, and SGML 
823 XML Document Processing using a SAX-Based XML Parser
826 XML to Objects and Objects to XML using SAX 
829 XML Document Processing using the Document Object Model (DOM) 
832 XML, A Simple XML Editor using SAX 
...

Miscellaneous
900 Controlling the Visible Text in a Text Area on Startup 
901 Horizontal Text Scrolling 
902 Preserving Default Key Behavior 
903 Controlling Position in a GridLayout 
...

Swing from A to Z
1000 Swing from A to Z, Getting Started, Part 1 
1001 Swing from A to Z Getting Started, Part 2
1005 Swing from A to Z: Some Simple Components
1010 Swing from A to Z: Properties, Events, and Methods
1015 Swing from A to Z: Transparency and Preferred Size
1020 Swing from A to Z: The border Property, (Part 1, Etched Border)
1021 Swing from A to Z: The Border Property (Part 2, BevelBorder and EmptyBorder)
1022 Swing from A to Z: The Border Property (Part 3, CompoundBorder)
1023 Swing from A to Z: The Border Property (Part 4, LineBorder, MatteBorder, and TitledBorder)
1024 Swing from A to Z: The Border Property (Part 5, Nested Compound Borders)
1025 Swing from A to Z: The Border Property, Part 6 (The BorderFactory Class)
1030 Swing from A to Z: Alignment Properties and BoxLayout, Part 1
1031 Swing from A to Z: Alignment Properties and BoxLayout, Part 2
1032 Swing from A to Z: Glue, Struts, and BoxLayout
1033 Swing from A to Z: Minimum, Maximum, and Preferred Sizes
1034 Swing from A to Z: Demystifying Glue and Struts, Part 1
1035 Swing from A to Z: Demystifying Glue and Struts, Part 2
1036 Swing from A to Z: Demystifying Glue and Struts, Part 3
1060 Swing from A to Z: Analyzing Swing Components, Part 1, Concepts
1062 Swing from A to Z: Analyzing Swing Components, Part 2, GUI Setup
1064 Swing from A to Z: Analyzing Swing Components, Part 3, Construction
1066 Swing from A to Z: Analyzing Swing Components, Part 4, Inheritance
1068 Swing from A to Z: Analyzing Swing Components, Part 5, Interfaces
...
Enterprise JavaBeans
1305 Enterprise JavaBeans: Java 2 Platform, Enterprise Edition, Part 1
1306 Enterprise JavaBeans: Java 2 Platform, Enterprise Edition, Part 2
1307 Enterprise JavaBeans: Java 2 Platform, Enterprise Edition, Part 3
1310 Enterprise JavaBeans: Getting Started with EJB, Part 1
1311 Enterprise JavaBeans: Getting Started with EJB, Part 2
1312 Enterprise JavaBeans: Getting Started with EJB, Part 3
1313 Enterprise JavaBeans: Getting Started with EJB, Part 4
1314 Enterprise JavaBeans: Getting Started with EJB, Part 5
1315 Enterprise JavaBeans: Getting Started with EJB, Part 6
1316 Enterprise JavaBeans: Getting Started with EJB, Part 7
1320 Enterprise JavaBeans: Middle-Tier Servers and J2EE
1322 Enterprise JavaBeans: Helper Classes
...

Data Structures and the Java Collections Framework
1350 Data Structures in Java: Part 1, Getting Started
1352 Data Structures in Java: Part 2, What Is a Collection?
1354 Data Structures in Java: Part 3, Purpose of Framework Interfaces
1356 Data Structures in Java: Part 4, Purpose of Implementations and Algorithms
1358 Data Structures in Java: Part 5, The Core Collection Interfaces
1360 Data Structures in Java: Part 6, Data Structures in Java: Part 6, Duplicate Elements, Ordered Collections, Sorted Collections, and Interface Specialization
1362 Data Structures in Java: Part 7, The Comparable Interface, Part 1
1364 Data Structures in Java: Part 8, The Comparable Interface, Part 2
1366 Data Structures in Java: Part 9, The Comparator Interface, Part 1
1368 Data Structures in Java: Part 10, The Comparator Interface, Part 2
1370 Data Structures in Java: Part 11, The Comparator Interface, Part 3
1372 Data Structures in Java: Part 12, The Comparator Interface, Part 4
1374 Data Structures in Java: Part 13, The Comparator Interface, Part 5
1376 Data Structures in Java: Part 14, The Comparator Interface, Part 6
1378 Data Structures in Java: Part 15, The toArray Method, Part 1
1380 Data Structures in Java: Part 16, The toArray Method, Part 2
...

Fun with Java
1450 Fun with Java: Sprite Animation, Part 1
1452 Fun with Java: Sprite Animation, Part 2
1454 Fun with Java: Sprite Animation, Part 3
1456 Fun with Java: Sprite Animation, Part 4
1458 Fun with Java: Sprite Animation, Part 5
1460 Fun with Java: Sprite Animation, Part 6
1462 Fun with Java: Sprite Animation, Part 7
1464 Fun with Java: Frame Animation
1466 Fun with Java: Animated Sea Worms
1468 Plotting Engineering and Scientific Data using Java
1470 Fun with Java: Frame Animation, Part 2
1472 Introduction to the Java Robot Class in Java
1472 Correction - Introduction to the Java Robot Class in Java
1474 An Automated Test Program using the Java Robot Class
1476 Demonstrating Java Programs using the Robot Class
1480 Fun with Java: Biomorphs and Artificial Life
1478 Fun with Java, How and Why Spectral Analysis Works
1482 Spectrum Analysis using Java, Sampling Frequency, Folding Frequency, and the FFT Algorithm
1483 Spectrum Analysis using Java, Frequency Resolution versus Data Length
1484 Spectrum Analysis using Java, Complex Spectrum and Phase Angle
1485 Spectrum Analysis using Java, Forward and Inverse Transforms, Filtering in the Frequency Domain
1486 Fun with Java, Understanding the Fast Fourier Transform (FFT) Algorithm
1487 Convolution and Frequency Filtering in Java
1488 Convolution and Matched Filtering in Java
1489 Plotting 3D Surfaces using Java
1490 2D Fourier Transforms using Java
1491 2D Fourier Transforms using Java, Part 2
1492 Plotting Large Quantities of Data using Java
1494 Dynamic Loading/Reloading of Classes and Dynamic Method Invocation, Part 1
1495 Dynamic Loading/Reloading of Classes, Part 2
1496 Using the Full-Screen Exclusive Mode API in Java
1510 A Recursive Filtering Workbench in Java
1511 The Driver Class for the Recursive Filtering Workbench in Java
1512 The User Input GUI for the Recursive Filtering Workbench in Java
1513 The Recursive Filtering Workbench in Java, Putting it all Together
1516 Introduction to Alice Programming

...
Java 3D API

1540 Understanding Lighting in the Java 3D API
1541 Back to Basics in the Java 3D API
1542 Digging a Little Deeper into the Java 3D API
1544 Simple Animation with the Java 3D API
1546 Understanding the Alpha Time-Base Class in Java 3D
1548 Combining Rotation and Translation in Java 3d
1550 Understanding Transforms in Java 2D
1552 Understanding Transforms in Java 3D
 

Essence of OOP Using Java
Click here for lessons 1600 through 16nn on the Essence of OOP Using Java.

...
Math for Game Programmers

1700 Getting Started
1702 Updating the Math Library for Graphics
1704 Working with Column Matrices, Points, and Vectors
1706 Vector Addition
1708 Putting the Game-Math Library to Work
1710 Venturing into a 3D World
1712 Our First 3D Game Program
1714 Getting Started with Vector Dot Product
1716 Applications of the Vector Dot Product
1718 A First-Person Shooter Game

...
New features in V1.4
1780 Understanding the Buffer class in Java
1782 The ByteBuffer Class in Java
1784 Processing Stack Trace Data in Java
1786 FileChannel Objects in Java, Background Information
1788 FileChannel Objects in Java, ByteBuffer Type
1790 FileChannel Objects in Java, Using View Objects for Different Types
1792 FileChannel Objects in Java, Records with Mixed Types
1794 Introduction to Memory-Mapped IO in Java
1796 Java, Memory-Mapped IO for Data of Mixed Types
1840 Focus Traversal Policies in Java Version 1.4
1844 Focusability in Java Version 1.4
1848 Changing Focus Traversal Keys in Java V1.4
1852 Programmatic Focus Traversal in Java V1.4
1854 The Opposite Focus Component
1855 The KeyEventDispatcher in Java
1856 The KeyEventPostProcessor in Java (Capturing Keyboard Strokes in Java)
1857 Window Focus and State in Java, Part 1 of 2
1858 Window Focus and State in Java, Part 2

...
Java Sound
2004 Java Sound, An Introduction
2008 Java Sound, Getting Started, Part 1, Playback
2012 Java Sound, Getting Started, Part 2, Capture using Specified Mixer
2014 Java Sound, Capturing Microphone Data into an Audio File
2016 Java Sound, Playing Back Audio Files using Java
2018 Java Sound, Using Audio Line Events
2020 Java Sound, Writing More Robust Audio Programs
2022 Java Sound, Creating, Playing, and Saving Synthetic Sounds
2024 Java Sound, Audio File Conversion
2026 Java Sound, Compressing Audio with mu-Law Encoding
...
Java v.s. C#

2100 Understanding Properties in Java and C#
...
Java v.s. SPAM
2150 Enlisting Java in the War Against SPAM, Part 1, The Communications Module
2152 Enlisting Java in the War Against SPAM, Part 2, The Screening Module
2154 Enlisting Java in the War Against SPAM: Training the Subject Line Screener
2156 Enlisting Java in the War Against SPAM: Training the Body Screener
2158 Fighting SPAM, How to Lodge a Complaint
...
Java v.s. EMail-Borne Viruses
2180 Enlisting Java in the War Against Email Viruses
2182 Enlisting Java in the War Against Email Viruses, Part 2, A Much Faster Program
2186 Overview of the BigDog Email Protection Program
2187 Getting Started with the BigDog Email Protection Program
2188 Understanding Base64 Data
...
Java API for XML Processing (JAXP)

2200 Java API for XML Processing (JAXP), Getting Started
2202 Getting Started with Java JAXP and XSL Transformations (XSLT)
2204 Java JAXP, Exposing a DOM Tree
2206 Java JAXP, Implementing Default XSLT Behavior in Java
2208 Java JAXP, Writing Java Code to Emulate an XSLT Transformation
2210 Java JAXP, Transforming XML to XHTML
...
Using Java to produce SVG graphics

2212 Java JAXP, Creating Graphics Using Java and SVG
2214 An Improved Approach for Creating SVG/XML Code and SVG/XML DOM Nodes using Java
2216 Using Java to Produce SVG Code in XHTML Data
2218 Writing Java Servlets to Produce XHTML Code That References External SVG Files
2220 Drawing grids, Bézier Curves and Elliptical Arcs Using Java and SVG
2222 Graphics, using Java and JDOM with SVG, Part 1
2224 Graphics, using Java and JDOM with SVG, Part 2
...
New Features in J2SE
2300 Generics in J2SE, Getting Started
...
Adaptive Filtering

2350 Adaptive Filtering in Java, Getting Started
2352 An Adaptive Whitening Filter in Java
2354 A General-Purpose LMS Adaptive Engine in Java
2356 An Adaptive Line Tracker in Java
2358 Adaptive Identification and Inverse Filtering using Java
2360 Adaptive Noise Cancellation using Java
2362 Adaptive Prediction using Java
...
More Help with Email

2400 Consolidating Email using Java
2402 Consolidating Email using Java, Part 2
...
Help with Bookmarks

2404 Uploading Old Email to Gmail using Java
2406 Creating a Portable Bookmark Library using Java
2408 Creating a Portable Bookmark Library using Java, Part 2
2410 Using Java to Clean Up Your Bookmark Library
...
Data Compression

2440 Understanding the Lempel-Ziv Data Compression Algorithm in Java
2442 Understanding the Huffman Data Compression Algorithm in Java
2444 Understanding the Discrete Cosine Transform in Java
2446 Understanding the 2D Discrete Cosine Transform in Java
2448 Understanding the 2D Discrete Cosine Transform in Java, Part 2
...
Ajax and other Web Applications

696   Deployment of Web Applications in Jakarta Apache Tomcat 5
2500 Developing Ajax Web Applications using ThinWire and Java
2502 Build Web apps with ThinWire and Java code, Part 1: Manage Web app layout
2504 Build Web apps with ThinWire and Java code, Part 2: Using the SplitLayout Class
2506 Build Web apps with ThinWire and Java code, Part 3: Styling support
2508 Build Web apps with ThinWire and Java code, Part 4: Write a template class
2510 Build Web apps with ThinWire and Java code, Part 5: Page switching

2550 Creating Ajax Web Applications Using the Google Web Toolkit (GWT) and Java
2552 Controlling layout in AJAX web applications using the GWT and Java
2554 Event Driven Programming in AJAX Using the GWT and Java
2556 Focus Events, Click Events, and Drag-and Drop in AJAX Using the GWT and Java
2558 Using the DOM class in AJAX with the GWT and Java
...
Midlets and the Sun Java Wireless Toolkit
2570 Getting Started with Midlets and the Sun Java Wireless Toolkit
2572 Capturing Output Produced by Programs Running in a Child Process
2574 Back to Basics with MIDlets and the Sun Java Wireless Toolkit for CLDC
2576 Introduction to the MIDlet User Interface, A First Look
2578 Handling Life-Cycle Issues with the MIDlet User Interface
2580 Using Alerts, Images, Timers, and Gauges in MIDlets
2582 Using Lists in MIDlets
2584 Using Forms and Items in MIDlets
2586 Programming MIDlets for Interactive Behavior
2590 Images, Drawn Graphics, and Event Handling in a MIDlet

 

... Java/Greenfoot
Hs00301 Getting Started with the Greenfoot Java IDE
2600 Getting Back to Basics with GUIs

...
Java Advanced Placement Study Guide Lessons
Click here for lessons AP0002 through AP0016
 

Richard G Baldwin, baldwin@dickbaldwin.com 

DISCLAIMER: To the best of my knowledge, all of the program code embedded in these HTML files was originally correct. However, over time, these HTML files have been processed through a variety of website content management programs. Sometimes, such programs are not friendly to embedded code, and arbitrarily remove characters such as angle brackets, square brackets, backslashes, etc. Therefore, you may occasionally find some code that has missing characters. If so, just insert them back into the code before you attempt to compile and execute the code.

[ Home

© 1996 - 2009 Richard G. Baldwin