问题: 
     
 第一次安"全屏(alt-e)"能够截图接着安第二次"全屏(alt-e)"会抛出异常,
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:595)
at com.CutPicture2$2.actionPerformed(CutPicture2.java:115)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1170)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1211)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
CutPicture2.java源代码:
package com;import java.awt.Dimension;public class CutPicture2 extends JFrame { /**
 * 
 */
private static final long serialVersionUID = -6586212477397271654L; /**
 * Launch the application
 * 
 * @param args
 */ CutPicture2Thread cp2t; public static void main(String args[]) { try { CutPicture2 frame = new CutPicture2();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width),
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true); } catch (Exception e) {
e.printStackTrace();
}
} public void conceal() {
this.setVisible(false);
try {
Thread.sleep(1000); } catch (InterruptedException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} } public void concea() {
this.setVisible(true);
} /**
 * Create the frame
 */
public CutPicture2() {
// CutPicture2 cp=(CutPicture2) getContentPane(); // cp2t =new CutPicture2Thread(cp);
cp2t = new CutPicture2Thread();
getContentPane().setLayout(null);
setSize(300, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar); final JMenu menu_1 = new JMenu();
menu_1.setText("文件");
menuBar.add(menu_1); final JMenuItem menuItem_1 = new JMenuItem();
menuItem_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});
menuItem_1.setText("保存");
menu_1.add(menuItem_1); final JMenu menu = new JMenu("捕捉");
// menu.setMnemonic(KeyEvent.VK_E); menu.setText("捕捉");
menuBar.add(menu); JMenuItem menuItem = new JMenuItem("捕捉", 'A');
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,
InputEvent.ALT_MASK));
menuItem.setText("全屏");
menu.add(menuItem); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

cp2t.start();
conceal();
try {
Thread.sleep(1000);
concea();
//cp2t.stopThread();
//cp2t = null;
} catch (InterruptedException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} }
}); final JPanel panel = new JPanel();
panel.setBounds(0, 0, 1024, 768);
getContentPane().add(panel);
//
}}
CutPicture2Thread.java原代码:
package com;import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;public class CutPicture2Thread extends Thread {
Robot r = null; BufferedImage b; Toolkit tk; Rectangle rt;
File f;
boolean start=true;
int screenCaptrue=0;
public CutPicture2Thread() { try {
r = new Robot();
} catch (AWTException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
} public void run() {
// TODO 自动生成方法存根
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

tk = Toolkit.getDefaultToolkit();
tk.sync();
rt = new Rectangle(tk.getScreenSize()); b = r.createScreenCapture(rt);
f = new File("E:\\"+screenCaptrue+".jpg"); try {
ImageIO.write(b, "jpg", f);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
f=null;

//while(getFlug()){
/*try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
tk = Toolkit.getDefaultToolkit();
tk.sync();
rt = new Rectangle(tk.getScreenSize()); b = r.createScreenCapture(rt);
File f = new File("E:\\"+screenCaptrue+".jpg"); try {
ImageIO.write(b, "jpg", f);
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
screenCaptrue++;
f=null;

}// }

public boolean getFlug(){
return start;
}
public void stopThread(){
start=false;
}*/
}}