Java Reference
In-Depth Information
break;
case ACTION_LOAD:
doLoadImage();
break;
case ACTION_SAVE:
doSaveImage();
break;
}
}
private void doSaveImage() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = fileChooser.showSaveDialog(this);
if (result != JFileChooser.APPROVE_OPTION)
return;
File saveFile = fileChooser.getSelectedFile();
if (!saveFile.getAbsolutePath().toLowerCase().endsWith(".png"))
saveFile = new File(saveFile.getAbsolutePath() + ".png");
BufferedImage image = new BufferedImage(
paintPanel.getSize().width,
paintPanel.getSize().height,
BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
image.setRGB(x, y, Color.white.getRGB());
if (paintPanel.isPixel(new Point(x, y))) {
image.setRGB(x, y, Color.black.getRGB());
}
}
}
try {
ImageIO.write(image, "png", saveFile);
} catch (IOException e) {
return;
}
}
This approach works just as well, as shown in Figure 11-25.
Here is the full code for the two classes once more for convenience:
import java.awt.Color;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
Search WWH ::




Custom Search