The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
| Version |
Location |
Description |
Submitted By |
Date Submitted |
Date Corrected |
| Printed |
Page xiv
+1 |
They use it to refer to people who breaks into systems or wreaks havoc
with computers as their weapon.
->
They use it to refer to people who break into systems or wreak havoc
with computers as their weapon.
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page xvi
+1 |
This chapter revelas
->
This chapter reveals
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 5
+3 |
The code is almost the same as JLabel.
->
The code is almost the same as ImageLabel.
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 5
example 1-4 |
There is a missing constructor in the ImageButton() class. It is in the
downloadable example code, but not in the book. So this:
public class ImageButton extends JButton {
public ImageButton(ImageIcon icon) {
should be changed to:
public class ImageButton extends JButton {
public ImageButton(String img) {
this(new ImageIcon(img));
}
public ImageButton(ImageIcon icon) {
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
5
example 1-4 |
There is a missing constructor in the ImageButton() class. It is in the
downloadable example code, but not in the book. So this:
public class ImageButton extends JButton {
public ImageButton(ImageIcon icon) {
should be changed to:
public class ImageButton extends JButton {
public ImageButton(String img) {
this(new ImageIcon(img));
}
public ImageButton(ImageIcon icon) {
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 5
example 1-4 |
There is a missing constructor in the ImageButton() class. It is in the
downloadable example code, but not in the book. So this:
public class ImageButton extends JButton {
public ImageButton(ImageIcon icon) {
should be changed to:
public class ImageButton extends JButton {
public ImageButton(String img) {
this(new ImageIcon(img));
}
public ImageButton(ImageIcon icon) {
|
Anonymous |
|
|
| Printed |
Page 7
sidebar "On Image Creation" |
save any section of the image as it's own file
->
save any section of the image as its own file
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 23
-1 |
After the obligatory call to super(), the constructor...
->
After the usual call to super(), the constructor...
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 110
2nd Paragraph; The class "DefaultMutableTableModel" is not part of Java 1.4. "... like the |
ability to add an remove rows provided by the DefaultMutableTableModel ..." "On the other hand, if
you subclass DefaultMutableTableModel ..." The search phrase "DefaultMutableTableModel" is not to be
found on java.sun.com, so I assume this class is not present in all Java version.
Changed:
If you go too high up the hierarchy by implementing TableModel
or subclassing DefaultTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultMutableTableModel. On the other hand,
if you subclass DefaultMutableTableModel, other developers will
be unhappy...
to:
If you go too high up the hierarchy by implementing TableModel
or subclassing AbstractTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultTableModel. On the other hand,
if you subclass DefaultTableModel, other developers will
be unhappy...
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
110
2nd Paragraph; The class "DefaultMutableTableModel" is not part of Java 1.4. "... like the |
ability to add an remove rows provided by the DefaultMutableTableModel ..." "On the other hand, if
you subclass DefaultMutableTableModel ..." The search phrase "DefaultMutableTableModel" is not to be
found on java.sun.com, so I assume this class is not present in all Java version.
Changed:
If you go too high up the hierarchy by implementing TableModel
or subclassing DefaultTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultMutableTableModel. On the other hand,
if you subclass DefaultMutableTableModel, other developers will
be unhappy...
to:
If you go too high up the hierarchy by implementing TableModel
or subclassing AbstractTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultTableModel. On the other hand,
if you subclass DefaultTableModel, other developers will
be unhappy...
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 110
2nd Paragraph; The class "DefaultMutableTableModel" is not part of Java 1.4. "... like the |
ability to add an remove rows provided by the DefaultMutableTableModel ..." "On the other hand, if
you subclass DefaultMutableTableModel ..." The search phrase "DefaultMutableTableModel" is not to be
found on java.sun.com, so I assume this class is not present in all Java version.
Changed:
If you go too high up the hierarchy by implementing TableModel
or subclassing DefaultTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultMutableTableModel. On the other hand,
if you subclass DefaultMutableTableModel, other developers will
be unhappy...
to:
If you go too high up the hierarchy by implementing TableModel
or subclassing AbstractTableModel, you would miss some typical Swing
functionality that developer expect, like the ability to add and remove
rows provided by DefaultTableModel. On the other hand,
if you subclass DefaultTableModel, other developers will
be unhappy...
|
Anonymous |
|
|
| Printed |
Page 114
example 3-6, last 2 lines |
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
delegatedModel.setValueAt(aValue, rowIndex, columnIndex);
->
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
delegatedModel.setValueAt(aValue, getDelegatedRow(rowIndex), columnIndex);
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 117
example 3-10, under static Object[][] data |
{"A", new Integer(2), Color.gray.darker().darker()},
{"B", new Integer (3), Color.gray},
{"C", new Integer (1), Color.gray.darker()},
->
{"A", new Integer(2), Color.gray.darker().darker()},
{"B", new Integer(3), Color.gray},
{"C", new Integer(1), Color.gray.darker()}
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 117
example 3-10, above TestSortableTableModel |
static Object[] bonusData = {
"D", "0", Color.red
->
static Object[] bonusData = {
"D", new Integer(0), Color.red
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 131
+3 |
I used a FileWriter instead of a FileInputStream because...
->
I used a FileWriter instead of a FileOutputStream because...
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 131
last paragraph; FileInputStream should be FileOutputStream |
The reader is correct. FileInputStream should be replaced with FileOutputStream
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
131
last paragraph; FileInputStream should be FileOutputStream |
The reader is correct. FileInputStream should be replaced with FileOutputStream
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 131
last paragraph; FileInputStream should be FileOutputStream |
The reader is correct. FileInputStream should be replaced with FileOutputStream
|
Anonymous |
|
|
| Printed |
Page 174
example 4-4 |
} else {
in = new FileInputStream(file);
}
}
->
} else {
in = new FileInputStream(file);
}
// ... code that does something with the InputStream 'in'
}
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 187
code example at bottom |
public class JStatusPanel extends JPanel {
->
public class JStatusBar extends JPanel {
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 188
code example at top |
public JStatusPanel(){
->
public JStatusBar(){
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 195
1st code block |
Properties settings = new Properties();
settings.load(new FileInputStream("configuration.props"));
String name = frame.getName();
->
Properties settings = new Properties();
try {
settings.load(new FileInputStream("configuration.props"));
} catch (FileNotFoundException fnfe) {
settings.store (new FileOutputStream ("configuration.props"),
"Window settings");
}
String name = frame.getName();
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 196
2nd code block |
Properties settings = new Properties();
settings.load(new FileInputStream("configuration.props"));
Iterator it = saver.framemap.keySet().iterator();
->
Properties settings = new Properties();
try {
settings.load(new FileInputStream("configuration.props"));
} catch (FileNotFoundException fnfe) {
// quietly ignore and overwrite later
}
Iterator it = saver.framemap.keySet().iterator();
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 200
3rd paragraph |
expressed at
should be
expressed as
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
200
3rd paragraph |
expressed at
should be
expressed as
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 200
3rd paragraph |
expressed at
should be
expressed as
|
Anonymous |
|
|
| Printed |
Page 254
Within paintComponent(Graphics g) method |
The variable hints in g2.setRenderingHints(hints) was never declared and is an unknown variable.
The reader is correct. The line should be changed to:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
254
Within paintComponent(Graphics g) method |
The variable hints in g2.setRenderingHints(hints) was never declared and is an unknown variable.
The reader is correct. The line should be changed to:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 254
Within paintComponent(Graphics g) method |
The variable hints in g2.setRenderingHints(hints) was never declared and is an unknown variable.
The reader is correct. The line should be changed to:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
Anonymous |
|
|
| Printed |
Page 255
Run the Animator; Infinite loop bug in sample code for the InfiniteProgressPanel$Animator |
if rampUp == false and alphaLevel == 0, the following code will never break itself out of the
animation loop as alphaLevel will always fail the test "alphaLevel > 0". Quick fix: change this test
to "alphaLevel >= 0".
if (rampUp)
{
if (alphaLevel < 255)
{
alphaLevel = (int) (255 * (System.currentTimeMillis() - start) / rampDelay);
if (alphaLevel >= 255)
{
alphaLevel = 255;
inRamp = false;
}
}
} else if (alphaLevel > 0) {
alphaLevel = (int) (255 - (255 * (System.currentTimeMillis() -start) /
rampDelay));
if (alphaLevel <= 0)
{
alphaLevel = 0;
break;
}
}
try
{
Thread.sleep(inRamp ? 10 : (int) (1000 / fps));
} catch (InterruptedException ie) {
break;
}
Thread.yield();
}
I believe the reader is correct. However, the code he quotes is not actually in the book. I
suspect a different version of the code ended up in the download. We should update the download but
the book itself is fine.
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 255
Run the Animator; Infinite loop bug in sample code for the InfiniteProgressPanel$Animator |
if rampUp == false and alphaLevel == 0, the following code will never break itself out of the
animation loop as alphaLevel will always fail the test "alphaLevel > 0". Quick fix: change this test
to "alphaLevel >= 0".
if (rampUp)
{
if (alphaLevel < 255)
{
alphaLevel = (int) (255 * (System.currentTimeMillis() - start) / rampDelay);
if (alphaLevel >= 255)
{
alphaLevel = 255;
inRamp = false;
}
}
} else if (alphaLevel > 0) {
alphaLevel = (int) (255 - (255 * (System.currentTimeMillis() -start) /
rampDelay));
if (alphaLevel <= 0)
{
alphaLevel = 0;
break;
}
}
try
{
Thread.sleep(inRamp ? 10 : (int) (1000 / fps));
} catch (InterruptedException ie) {
break;
}
Thread.yield();
}
I believe the reader is correct. However, the code he quotes is not actually in the book. I
suspect a different version of the code ended up in the download. We should update the download but
the book itself is fine.
|
Anonymous |
|
|
| Printed |
Page 258
2nd paragraph; common subclass should be common superclass |
The reader is correct. It should be changed to 'common superclass'.
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 258
2nd paragraph; class agnostic listener: define the term |
Re-reading it, I'm coming to doubt the entire value of that sentence. I'd suggest we drop the
sentence "By constructing it with...".
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
258
2nd paragraph; common subclass should be common superclass |
The reader is correct. It should be changed to 'common superclass'.
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
258
2nd paragraph; class agnostic listener: define the term |
Dropped the sentence "By constructing it with...".
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 258
2nd paragraph; common subclass should be common superclass |
The reader is correct. It should be changed to 'common superclass'.
|
Anonymous |
|
|
| Printed |
Page 258
2nd paragraph; class agnostic listener: define the term |
Re-reading it, I'm coming to doubt the entire value of that sentence. I'd suggest we drop the
sentence "By constructing it with...".
|
Anonymous |
|
|
| Printed |
Page 269
last paragraph, line 1 |
is handled
should be
are handled
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
269
last paragraph, line 1 |
is handled
should be
are handled
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 269
last paragraph, line 1 |
is handled
should be
are handled
|
Anonymous |
|
|
| Printed |
Page 273
-1 |
trasnformations
->
transformations
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 273
code sample; super.paint(g); } else { delete both lines |
g and g2 both refer to the same object, so the code works with or without
this change. g2 is only needed in order to call Graphics2D methods on the object. I think the reader
is asking for a simple refactoring: since the if and else blocks both end with super.paint(g), the if
could end with the transform, the else could be eliminated, and you could then fall through to
super.paint(g). That's not really important, but it is cleaner, so let's change that part of example
7-6 from:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
super.paint(g);
} else {
super.paint(g);
}
}
to:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
}
super.paint(g);
}
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
273
code sample; super.paint(g); } else { delete both lines |
g and g2 both refer to the same object, so the code works with or without
this change. g2 is only needed in order to call Graphics2D methods on the object. I think the reader
is asking for a simple refactoring: since the if and else blocks both end with super.paint(g), the if
could end with the transform, the else could be eliminated, and you could then fall through to
super.paint(g). That's not really important, but it is cleaner, so let's change that part of example
7-6 from:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
super.paint(g);
} else {
super.paint(g);
}
}
to:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
}
super.paint(g);
}
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 273
code sample; super.paint(g); } else { delete both lines |
g and g2 both refer to the same object, so the code works with or without
this change. g2 is only needed in order to call Graphics2D methods on the object. I think the reader
is asking for a simple refactoring: since the if and else blocks both end with super.paint(g), the if
could end with the transform, the else could be eliminated, and you could then fall through to
super.paint(g). That's not really important, but it is cleaner, so let's change that part of example
7-6 from:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
super.paint(g);
} else {
super.paint(g);
}
}
to:
public void paint (Graphics g) {
if (g instanceof Graphics2D) {
Graphics2D g2 = (Graphics2D) g;
AffineTransform flipTrans = new AffineTransform();
double widthD = (double) getWidth();
flipTrans.setToTranslation (widthD, 0);
flipTrans.scale (-1.0, 1);
g2.transform (flipTrans);
}
super.paint(g);
}
|
Anonymous |
|
|
| Printed |
Page 280
2nd paragraph, line 6 |
and leave
should be
and leaves
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
280
2nd paragraph, line 6 |
and leave
should be
and leaves
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 280
2nd paragraph, line 6 |
and leave
should be
and leaves
|
Anonymous |
|
|
| Printed |
Page 282
code sample; Hack 100 should be Hack 53 |
In example 7-8, should change:
JFrame frame = new JFrame("Hack 100: Anti-Aliased text");
to:
JFrame frame = new JFrame("Hack 53: Anti-Aliased text");
This change should be made in the source download too.
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
282
code sample; Hack 100 should be Hack 53 |
In example 7-8, should change:
JFrame frame = new JFrame("Hack 100: Anti-Aliased text");
to:
JFrame frame = new JFrame("Hack 53: Anti-Aliased text");
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 282
code sample; Hack 100 should be Hack 53 |
In example 7-8, should change:
JFrame frame = new JFrame("Hack 100: Anti-Aliased text");
to:
JFrame frame = new JFrame("Hack 53: Anti-Aliased text");
This change should be made in the source download too.
|
Anonymous |
|
|
| Printed |
Page 286
2nd paragraph; first argument should be second argument |
The wording is unclear. It should be 'and then call the main() entry point of the class passed
as the first argument after Wrapit.
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
286
2nd paragraph; first argument should be second argument |
The wording is unclear. It should be 'and then call the main() entry point of the class passed
as the first argument after Wrapit.
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 286
2nd paragraph; first argument should be second argument |
The wording is unclear. It should be 'and then call the main() entry point of the class passed
as the first argument after Wrapit.
|
Anonymous |
|
|
| Printed |
Page 289
3rd paragraph |
mangnified
should be
magnified
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 289
last paragraph; multiplying the zoom factor by the should be dividing the magnifying |
component's height and width by the zoom factor
The reader is correct. It should be changed
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
289
3rd paragraph |
mangnified
should be
magnified
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
289
last paragraph |
"Multiplying the zoom factor by the" should be "dividing the magnifying component's height and width by the zoom factor."
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 289
3rd paragraph |
mangnified
should be
magnified
|
Anonymous |
|
|
| Printed |
Page 289
last paragraph; multiplying the zoom factor by the should be dividing the magnifying |
component's height and width by the zoom factor
The reader is correct. It should be changed
|
Anonymous |
|
|
| Printed |
Page 290
3rd paragraph, last line; translate() should be translatePoint() |
The reader is correct. It's translatePoint() in example 8-1, so the only thing wrong here is
the text.
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
290
3rd paragraph, last line; translate() should be translatePoint() |
The reader is correct. It's translatePoint() in example 8-1, so the only thing wrong here is
the text.
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 290
3rd paragraph, last line; translate() should be translatePoint() |
The reader is correct. It's translatePoint() in example 8-1, so the only thing wrong here is
the text.
|
Anonymous |
|
|
| Printed |
Page 297
last paragraph; The component still not clear -- change to: However, the component still |
The reader is correct. It should be changed
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
297
last paragraph; "The component still" is not clear -- change to: However, the component still |
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 297
last paragraph; The component still not clear -- change to: However, the component still |
The reader is correct. It should be changed
|
Anonymous |
|
|
| Printed |
Page 309
Hack #62; Vector-Based: explain what vector-based means |
I'm pretty sure the audience will know what a Vector is, but if we need to clarify we should
modify the last sentence of the first paragraph like this:
'opening the door for a completely vector drawn (meaning with shapes instead of images) Swing Look
and Feel'
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 309
last paragraph; due to a DPI change: explain when a DPI change occurs |
Change to 'due to a change in screen resolution, for example'
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
309
Hack #62; Vector-Based: explain what vector-based means |
I'm pretty sure the audience will know what a Vector is, but if we need to clarify we should
modify the last sentence of the first paragraph like this:
'opening the door for a completely vector drawn (meaning with shapes instead of images) Swing Look
and Feel'
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
309
last paragraph; due to a DPI change: explain when a DPI change occurs |
Change to 'due to a change in screen resolution, for example'
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 309
Hack #62; Vector-Based: explain what vector-based means |
I'm pretty sure the audience will know what a Vector is, but if we need to clarify we should
modify the last sentence of the first paragraph like this:
'opening the door for a completely vector drawn (meaning with shapes instead of images) Swing Look
and Feel'
|
Anonymous |
|
|
| Printed |
Page 309
last paragraph; due to a DPI change: explain when a DPI change occurs |
Change to 'due to a change in screen resolution, for example'
|
Anonymous |
|
|
| Printed |
Page 315
under Hacking the Hack; SVG define the abbreviation |
"...would be to use SVG (Scalable Vector Grahpics) files instead of..."
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
315
under Hacking the Hack; SVG define the abbreviation |
"...would be to use SVG (Scalable Vector Graphics) files instead of..."
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 315
under Hacking the Hack; SVG define the abbreviation |
"...would be to use SVG (Scalable Vector Grahpics) files instead of..."
|
Anonymous |
|
|
| Printed |
Page 319
1st paragraph; as a lightweight: as a heavyweight (?) |
Changed "Indeed, as a lightweight component..." to "Indeed, as a heavyweight..."
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
319
1st paragraph; as a lightweight: as a heavyweight (?) |
Changed "Indeed, as a lightweight component..." to "Indeed, as a heavyweight..."
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 319
1st paragraph; as a lightweight: as a heavyweight (?) |
Changed "Indeed, as a lightweight component..." to "Indeed, as a heavyweight..."
|
Anonymous |
|
|
| Printed |
Page 361
1st paragraph |
with an applet
should be
with applets
(because of the "they")
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
361
1st paragraph |
with an applet
should be
with applets
(because of the "they")
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 361
1st paragraph |
with an applet
should be
with applets
(because of the "they")
|
Anonymous |
|
|
| Printed |
Page 364
1st paragraph; AppletAudio should be AppletSound |
"...and AppletAudio.class in their own..." has changed to "...and AppletSound.class in
their own..."
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
364
1st paragraph; AppletAudio should be AppletSound |
"...and AppletAudio.class in their own..." has changed to "...and AppletSound.class in
their own..."
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 364
1st paragraph; AppletAudio should be AppletSound |
"...and AppletAudio.class in their own..." has changed to "...and AppletSound.class in
their own..."
|
Anonymous |
|
|
| Printed |
Page 367
last paragraph; description: descriptor (as in the next line) |
Changed "pass around description objects" to "pass around descriptor objects"
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
367
last paragraph; description: descriptor (as in the next line) |
Changed "pass around description objects" to "pass around descriptor objects"
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 367
last paragraph; description: descriptor (as in the next line) |
Changed "pass around description objects" to "pass around descriptor objects"
|
Anonymous |
|
|
| Printed |
Page 380
first code example |
NOTE: On some JVMs, the default AudioInputStream will not support moving backwards and
forwards in the stream, so the call to reset() in the downloadable example will fail
with "mark/reset not supported". You can prevent this by ensuring the reset-ability
of your stream, which you do by creating the AudioInputStream from a
BufferedInputStream you set up.
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
->
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new
BufferedInputStream (new FileInputStream (file)));
########################################
|
Anonymous |
|
Mar 01, 2007 |
| Printed |
Page 447
2nd code sample; loop through 100 times: delete |
The reader is correct. It should be changed
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
447
2nd code sample |
Delete "loop through 100 times"
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 447
2nd code sample; loop through 100 times: delete |
The reader is correct. It should be changed
|
Anonymous |
|
|
| Printed |
Page 451
1st code block; move the mouse over 10 steps: delete |
The reader is correct. It should be changed
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
451
1st code block |
Delete "move the mouse over 10 steps"
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 451
1st code block; move the mouse over 10 steps: delete |
The reader is correct. It should be changed
|
Anonymous |
|
|
| Printed |
Page 463
1st code block; (Runnable): delete. The cast is unnecessary |
The reader is correct.
Changed:
loaderThread = new Thread ((Runnable) this);
to:
loaderThread = new Thread (this);
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
463
1st code block; (Runnable): delete. The cast is unnecessary |
The reader is correct.
Changed:
loaderThread = new Thread ((Runnable) this);
to:
loaderThread = new Thread (this);
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 463
1st code block; (Runnable): delete. The cast is unnecessary |
The reader is correct.
Changed:
loaderThread = new Thread ((Runnable) this);
to:
loaderThread = new Thread (this);
|
Anonymous |
|
|
| Printed |
Page 465
2nd paragraph; doRun: loadURL |
Changed "In the doRun() implementation" to "In the loadURL() implementation"
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
465
2nd paragraph; doRun: loadURL |
Changed "In the doRun() implementation" to "In the loadURL() implementation"
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 465
2nd paragraph; doRun: loadURL |
Changed "In the doRun() implementation" to "In the loadURL() implementation"
|
Anonymous |
|
|
| Printed |
Page 489
1st line; Explain why the ACTION_EVENT.MASK |
Add this sentence at the end of the paragraph. 'This is to include both action and mouse
events'
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
489
1st line; Explain why the ACTION_EVENT.MASK |
Add this sentence at the end of the paragraph. 'This is to include both action and mouse
events'
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 489
1st line; Explain why the ACTION_EVENT.MASK |
Add this sentence at the end of the paragraph. 'This is to include both action and mouse
events'
|
Anonymous |
|
|
| Printed |
Page 493
last paragraph; imbedded: embedded |
The reader is correct. It should be changed.
|
Anonymous |
|
Jun 01, 2008 |
| Other Digital Version |
493
last paragraph |
Change imbedded to embedded
|
Anonymous |
|
Jun 01, 2008 |
| Printed |
Page 493
last paragraph; imbedded: embedded |
The reader is correct. It should be changed.
|
Anonymous |
|
|