?? imagemenu.java
字號(hào):
checkImageMenuItem();
}
public void internalFrameActivated(InternalFrameEvent e) {
checkImageMenuItem();
}
public void internalFrameDeactivated(InternalFrameEvent e) {
}
};
}
private void checkImageMenuItem() {
if(getDesktopPane().getAllFrames().length == 0 || getDesktopPane().getSelectedFrame() == null) {
saveMenuItem.setEnabled(false);
saveAsMenuItem.setEnabled(false);
saveAllMenuItem.setEnabled(false);
}
else {
saveMenuItem.setEnabled(true);
saveAsMenuItem.setEnabled(true);
saveAllMenuItem.setEnabled(true);
}
}
public JMenu getMenu() {
return imageMenu;
}
private void captureScreen() {
parent.setVisible(false);
int option = JOptionPane.showOptionDialog(null,
delaySlider, "delay ? (seconds)", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
if(option == JOptionPane.CANCEL_OPTION) {
parent.setVisible(true);
return;
}
try {
Thread.sleep(delaySlider.getValue() * 1000);
}
catch(InterruptedException e) {
infoMessageBox(e.getMessage());
}
Image image = captureHelper.capture();
parent.setVisible(true);
newInternalFrame("*untitled", image);
}
private void newImageFile() {
int option = JOptionPane.showOptionDialog(null, newImagePanel, "New image",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
if(option == JOptionPane.OK_OPTION) {
int width = ((Integer) widthSpinner.getValue()).intValue();
int height = ((Integer) heightSpinner.getValue()).intValue();
BufferedImage bufferedImage = new BufferedImage(width , height, BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.getGraphics();
g.setColor(backgroundColorBox.getColor());
g.fillRect(0, 0, width, height);
newInternalFrame("untitled", bufferedImage);
}
}
private void newInternalFrame(String title, Image image) {
JInternalFrame internalFrame = createImageInternalFrame(title, image);
getDesktopPane().add(internalFrame);
internalFrame.setVisible(true);
try {
internalFrame.setSelected(true);
}
catch(PropertyVetoException e) {
infoMessageBox(e.getMessage());
}
fitAppSize(image);
}
private void openImageFile() {
new Thread(new Runnable() {
public void run() {
if(openFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
File[] files = openFileChooser.getSelectedFiles();
for(int i = 0; i < files.length; i++) {
// bring it to top
try {
Image image = ImageIO.read(files[i]);
JInternalFrame internalFrame = createImageInternalFrame(files[i].getAbsolutePath(), image);
getDesktopPane().add(internalFrame);
internalFrame.setVisible(true);
internalFrame.setSelected(true);
fitAppSize(image);
}
catch(IOException e) {
infoMessageBox(e.getMessage());
}
catch(PropertyVetoException e) {
infoMessageBox(e.getMessage());
}
}
}
}
}).start();
}
private void saveImageFile() {
String title = getDesktopPane().getSelectedFrame().getTitle();
if(title.equals("*untitled") || title.equals("untitled")) {
saveImageFileAs();
}
else if(title.startsWith("*")){
save(title.substring(1));
}
}
private void saveImageFileAs() {
if(saveFileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
File file = saveFileChooser.getSelectedFile();
String filename = file.toString();
String lowerCaseFilename = filename.toLowerCase();
// the default extension filename is 'jpg'.
if(!lowerCaseFilename.endsWith(".jpg") && !lowerCaseFilename.endsWith(".png")) {
filename = filename + ".jpg";
file = new File(filename);
}
if(file.exists()) {
boolean isSaveAs = true;
while(isSaveAs) {
int option = JOptionPane.showOptionDialog(null,
filename + " exists, overwrite?", "overwrite?", JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
switch(option) {
case JOptionPane.YES_OPTION:
isSaveAs = false;
break;
case JOptionPane.NO_OPTION:
if(saveFileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
file = saveFileChooser.getSelectedFile();
filename = file.toString();
}
else {
isSaveAs = false;
}
break;
case JOptionPane.CANCEL_OPTION:
// cancell save action
return;
}
}
}
save(filename);
}
}
private void save(String filename) {
CanvasComponent canvas = getCanvasOfSelectedFrame();
Image image = canvas.getImage();
// create BufferedImage for ImageIO
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),
image.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.getGraphics();
g.drawImage(image, 0, 0, null);
try {
// decide the extension filename
int dotpos = filename.lastIndexOf('.');
ImageIO.write(bufferedImage, filename.substring(dotpos + 1), new File(filename));
}
catch(IOException e) {
infoMessageBox(e.getMessage());
}
getDesktopPane().getSelectedFrame().setTitle(filename);
}
private void saveAllImageFile() {
if(getDesktopPane().getAllFrames().length == 0)
return;
final IBatcher batcher = new IBatcher() {
public void execute() {
saveImageFile();
}
};
new Thread(new Runnable() {
public void run() {
batch(batcher);
}
}).start();
}
private void checkUnsavedImages() {
JInternalFrame[] internalFrames = getDesktopPane().getAllFrames();
for(int i = 0; i < internalFrames.length; i++) {
try {
internalFrames[i].setIcon(false);
internalFrames[i].setSelected(true);
if(checkUnsavedImage(internalFrames[i])) {
return;
}
}
catch(PropertyVetoException e) {
infoMessageBox(e.getMessage());
}
}
// check all images ok, now quit the application.
if(getDesktopPane().getAllFrames().length == 0)
System.exit(0);
}
private boolean checkUnsavedImage(JInternalFrame internalFrame) {
boolean cancel = false;
if(internalFrame.getTitle().startsWith("*")) {
int option = JOptionPane.showOptionDialog(null,
internalFrame.getTitle().substring(1) + " is unsaved, save?", "save?", JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, smallLogo, null, null);
switch(option) {
case JOptionPane.YES_OPTION:
try {
internalFrame.setSelected(true);
saveImageFile();
if(!internalFrame.getTitle().startsWith("*")) {
removeMementoAndDispose(internalFrame);
}
}
catch(PropertyVetoException e) {
infoMessageBox(e.getMessage());
}
break;
case JOptionPane.NO_OPTION:
removeMementoAndDispose(internalFrame);
break;
case JOptionPane.CANCEL_OPTION:
// cancell quit action
cancel = true;
break;
}
}
else {
removeMementoAndDispose(internalFrame);
}
return cancel;
}
private void removeMementoAndDispose(JInternalFrame internalFrame) {
CanvasComponent canvas = getCanvasOfInternalFrame(internalFrame);
getMementoManagers().remove(canvas);
internalFrame.setVisible(false);
internalFrame.dispose();
}
public InternalFrameListener getInternalFrameListener() {
return internalFrameListener;
}
public WindowListener getWindowListener() {
return windowListener;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -