`
vvv6628341
  • 浏览: 1617 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

J2SE_gui

阅读更多

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.rar_j2EE api_j2se_j2se.c

    J2SE 提供了丰富的类库,包括基础的 I/O、网络编程、多线程、图形用户界面(GUI)等,同时,它也是 J2EE 平台的基础,因为 J2EE 应用程序构建在 J2SE 之上,利用其提供的功能和服务。 "j2se.chm" 文件很可能是一个...

    J2SE_API_chs

    10. **事件处理**:java.awt 和 javax.swing 包提供了图形用户界面(GUI)组件和事件处理机制,支持事件监听和回调,可用于构建桌面应用程序。 11. ** Charm 格式**:标签中提到的 "charm格式" 没有明确解释,可能...

    JDK_API_J2SE_6_中文版

    《JDK_API_J2SE_6_中文版》是针对Java 2 Platform Standard Edition (J2SE) 6.0的API文档的中文版本。这个文档对于Java开发者来说至关重要,因为它详细介绍了Java SE 6平台的核心类库和接口,帮助程序员理解和使用...

    java_movestar.rar_j2se_线程控制

    总的来说,这个"java_movestar.rar_j2se_线程控制"项目是一个很好的学习资源,它演示了如何在J2SE环境中利用线程进行并发编程,以及如何结合GUI和随机数生成来创建动态的视觉效果。对于Java初学者来说,这是一个深入...

    j2se_中文版

    在Java编程中,J2SE是基础,它包含了核心类库,如集合框架、I/O流、网络编程、多线程、GUI(图形用户界面)组件、异常处理、反射机制等。这些API为开发者提供了构建复杂应用程序所需的各种工具和功能。 1. 集合框架...

    j2se_TankWar_坦克大战练习项目(单机版)

    J2SE提供了丰富的API,包括核心类库、I/O流、网络编程、多线程、图形用户界面(GUI)等,这些都在坦克大战的实现中得到了应用。 1. **图形用户界面(GUI)设计**:坦克大战的界面展示是通过Java的AWT(Abstract ...

    J2SE_Java_Api.zip

    此外,J2SE Java Api还包含`java.awt`和`javax.swing`包,这两个包提供了GUI(图形用户界面)编程的支持,可以创建窗口、按钮、文本框等组件,构建美观的桌面应用程序。`java.sql`包则用于数据库操作,支持JDBC...

    J2SE.rar_j2se_java公交查询_基于java的公交

    《基于Java的J2SE公交查询系统详解》 在当今信息化社会,公共交通查询系统的便捷性对公众出行至关重要。本文将详细介绍一个基于Java Standard Edition (J2SE) 的静态公交信息查询系统,它为用户提供了简单易用的...

    J2SE_5.0_第07章_容器1.rar

    容器是Java GUI编程中的核心组件,它们负责组织和管理其他组件,如按钮、文本框等。在Java Swing库中,容器类如JFrame、JPanel和JDialog是构建用户界面的基础。容器可以包含其他容器,从而实现复杂的布局设计。第07...

    J2SE.rar_J2SE在线查询_j2se chm

    《J2SE在线查询_j2SE CHM》是一款专为Java开发者设计的资源包,它提供了J2SE(Java 2 Platform, Standard Edition)的全面类库查询功能,并且以中文的形式呈现,使得国内开发者在查阅Java API时更加便捷。...

    JAVA_API.rar_JAVA_API_j2se j2EE api_j2se api j2ee api_j2se j2ee

    此外,还有GUI相关的Swing和AWT组件,用于创建图形用户界面。 2. **j2ee API**:面向企业级应用开发,提供了服务器端功能,例如Servlet、JSP(JavaServer Pages)、JavaBean、EJB(Enterprise JavaBeans)、JMS...

    J2SE6.0_API_HTML格式的 可通过浏览器直接打开

    9. **Swing和AWT**:这两个图形用户界面(GUI)工具包提供了创建桌面应用的组件,如按钮、文本框、菜单等。 10. **XML处理**:Java的DOM和SAX解析器以及JAXB框架用于XML文档的解析和生成,使Java应用能够与XML数据...

    Java_GUI_SWing考试系统_MySql.rar

    一个月J2SE培训的成果,未采用MVC模式 基本功能 1、前台 考题实现数据库随机抽取、考试计时、交卷入库等 2、后台 三个简单的管理界面,用户管理界面、题库管理界面、考生成绩界面 适合人群:初级JAVA学员

    砖墙屏保(J2SE的GUI组件的设计)

    一共3个java文件(一个主程序,一个MyRectangle类,一个DrawJPanel类)

    j2se.rar_j2se

    其他文件如“Notepad.java”可能是实现一个简单的文本编辑器,涉及I/O流和GUI设计;“testString.java”可能涵盖了字符串操作,如拼接、比较和模式匹配;“Runtimetest.java”可能涉及到运行时类Runtime的使用,用于...

    J2SE.rar_j2se

    Java标准版(J2SE,Java 2 Platform Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序。它包含了Java语言的核心库,如awt、swing、java.io、java.nio、java.util、java.sql等,...

    J2SE项目_雇员管理系统_源码

    7. **Swing或JavaFX GUI**:创建用户界面,可能包括JFrame、JButton、JTable等组件的使用。 8. **异常处理**:学习如何使用try-catch-finally语句处理程序中的异常。 9. **多线程**:如果系统涉及并发处理,会用到...

    java-j2se.rar_j2se

    15. **Swing组件与事件处理**:用于构建图形用户界面(GUI)的Swing库,如JFrame、JButton、JLabel等组件,以及事件监听器的添加。 通过深入学习和理解这些知识点,并结合提供的面试题目进行实践,学习者可以全面...

Global site tag (gtag.js) - Google Analytics