Java截屏功能:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
/**
* 用Java模拟出QQ桌面截图功能
* @author 五斗米 <如转载请保留作者和出处>
* @blog http://blog.csdn.net/mq612
*/
public class Test extends JFrame {
private static final long serialVersionUID = -267804510087895906L;
private JButton button = null;
private JLabel imgLabel = null;
public Test() {
button = new JButton("模拟屏幕(点右键退出)");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
new ScreenWindow(imgLabel);
} catch (Exception e1) {
JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
}
});
JPanel pane = new JPanel();
pane.setBackground(Color.WHITE);
imgLabel = new JLabel();
pane.add(imgLabel);
JScrollPane spane = new JScrollPane(pane);
this.getContentPane().add(button, BorderLayout.NORTH);
this.getContentPane().add(spane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
class ScreenWindow extends JFrame {
private static final long serialVersionUID = -3758062802950480258L;
private boolean isDrag = false;
private int x = 0;
private int y = 0;
private int xEnd = 0;
private int yEnd = 0;
public ScreenWindow(final JLabel imgLabel) throws AWTException, InterruptedException {
Dimension screenDims = Toolkit.getDefaultToolkit().getScreenSize();
JLabel label = new JLabel(new ImageIcon(ScreenImage.getScreenImage(0, 0, screenDims.width, screenDims.height)));
label.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
label.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
dispose();
}
}
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
}
public void mouseReleased(MouseEvent e) {
if (isDrag) {
xEnd = e.getX();
yEnd = e.getY();
if(x > xEnd){
int temp = x;
x = xEnd;
xEnd = temp;
}
if(y > yEnd){
int temp = y;
y = yEnd;
yEnd = temp;
}
try {
imgLabel.setIcon(new ImageIcon(ScreenImage.getScreenImage(x, y, xEnd - x, yEnd - y)));
} catch (Exception ex) {
JOptionPane.showConfirmDialog(null, "出现意外错误!", "系统提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
}
dispose();
}
}
});
label.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
if(!isDrag)
isDrag = true;
}
public void mouseMoved(MouseEvent e) {
/** 拖动过程的虚线选取框需自己实现 */
}
});
this.setUndecorated(true);
this.getContentPane().add(label);
this.setSize(screenDims.width, screenDims.height);
this.setVisible(true);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}
class ScreenImage {
public static Image getScreenImage(int x, int y, int w, int h) throws AWTException, InterruptedException {
Robot robot = new Robot();
Image screen = robot.createScreenCapture(new Rectangle(x, y, w, h)).getScaledInstance(w, h, Image.SCALE_SMOOTH);
MediaTracker tracker = new MediaTracker(new Label());
tracker.addImage(screen, 1);
tracker.waitForID(0);
return screen;
}
}
分享到:
相关推荐
J2SE 提供了丰富的类库,包括基础的 I/O、网络编程、多线程、图形用户界面(GUI)等,同时,它也是 J2EE 平台的基础,因为 J2EE 应用程序构建在 J2SE 之上,利用其提供的功能和服务。 "j2se.chm" 文件很可能是一个...
10. **事件处理**:java.awt 和 javax.swing 包提供了图形用户界面(GUI)组件和事件处理机制,支持事件监听和回调,可用于构建桌面应用程序。 11. ** Charm 格式**:标签中提到的 "charm格式" 没有明确解释,可能...
《JDK_API_J2SE_6_中文版》是针对Java 2 Platform Standard Edition (J2SE) 6.0的API文档的中文版本。这个文档对于Java开发者来说至关重要,因为它详细介绍了Java SE 6平台的核心类库和接口,帮助程序员理解和使用...
总的来说,这个"java_movestar.rar_j2se_线程控制"项目是一个很好的学习资源,它演示了如何在J2SE环境中利用线程进行并发编程,以及如何结合GUI和随机数生成来创建动态的视觉效果。对于Java初学者来说,这是一个深入...
在Java编程中,J2SE是基础,它包含了核心类库,如集合框架、I/O流、网络编程、多线程、GUI(图形用户界面)组件、异常处理、反射机制等。这些API为开发者提供了构建复杂应用程序所需的各种工具和功能。 1. 集合框架...
J2SE提供了丰富的API,包括核心类库、I/O流、网络编程、多线程、图形用户界面(GUI)等,这些都在坦克大战的实现中得到了应用。 1. **图形用户界面(GUI)设计**:坦克大战的界面展示是通过Java的AWT(Abstract ...
此外,J2SE Java Api还包含`java.awt`和`javax.swing`包,这两个包提供了GUI(图形用户界面)编程的支持,可以创建窗口、按钮、文本框等组件,构建美观的桌面应用程序。`java.sql`包则用于数据库操作,支持JDBC...
《基于Java的J2SE公交查询系统详解》 在当今信息化社会,公共交通查询系统的便捷性对公众出行至关重要。本文将详细介绍一个基于Java Standard Edition (J2SE) 的静态公交信息查询系统,它为用户提供了简单易用的...
容器是Java GUI编程中的核心组件,它们负责组织和管理其他组件,如按钮、文本框等。在Java Swing库中,容器类如JFrame、JPanel和JDialog是构建用户界面的基础。容器可以包含其他容器,从而实现复杂的布局设计。第07...
《J2SE在线查询_j2SE CHM》是一款专为Java开发者设计的资源包,它提供了J2SE(Java 2 Platform, Standard Edition)的全面类库查询功能,并且以中文的形式呈现,使得国内开发者在查阅Java API时更加便捷。...
此外,还有GUI相关的Swing和AWT组件,用于创建图形用户界面。 2. **j2ee API**:面向企业级应用开发,提供了服务器端功能,例如Servlet、JSP(JavaServer Pages)、JavaBean、EJB(Enterprise JavaBeans)、JMS...
9. **Swing和AWT**:这两个图形用户界面(GUI)工具包提供了创建桌面应用的组件,如按钮、文本框、菜单等。 10. **XML处理**:Java的DOM和SAX解析器以及JAXB框架用于XML文档的解析和生成,使Java应用能够与XML数据...
一个月J2SE培训的成果,未采用MVC模式 基本功能 1、前台 考题实现数据库随机抽取、考试计时、交卷入库等 2、后台 三个简单的管理界面,用户管理界面、题库管理界面、考生成绩界面 适合人群:初级JAVA学员
一共3个java文件(一个主程序,一个MyRectangle类,一个DrawJPanel类)
其他文件如“Notepad.java”可能是实现一个简单的文本编辑器,涉及I/O流和GUI设计;“testString.java”可能涵盖了字符串操作,如拼接、比较和模式匹配;“Runtimetest.java”可能涉及到运行时类Runtime的使用,用于...
Java标准版(J2SE,Java 2 Platform Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序。它包含了Java语言的核心库,如awt、swing、java.io、java.nio、java.util、java.sql等,...
7. **Swing或JavaFX GUI**:创建用户界面,可能包括JFrame、JButton、JTable等组件的使用。 8. **异常处理**:学习如何使用try-catch-finally语句处理程序中的异常。 9. **多线程**:如果系统涉及并发处理,会用到...
15. **Swing组件与事件处理**:用于构建图形用户界面(GUI)的Swing库,如JFrame、JButton、JLabel等组件,以及事件监听器的添加。 通过深入学习和理解这些知识点,并结合提供的面试题目进行实践,学习者可以全面...