Swing Zoom应用程序

时间:2015-04-16 14:49:16

标签: java swing

我正在尝试设计一个缩放应用程序,它缩放围绕鼠标指针的矩形区域......

/ *  *要更改此许可证标题,请在“项目属性”中选择“许可证标题”。  *要更改此模板文件,请选择“工具”|模板  *并在编辑器中打开模板。  * / 包缩放;

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;

/**
 *
 * @author keyur Parekh
 */
public class Zoom extends JFrame implements Runnable {

    Robot r;
    Window wnd;
    int width, height;

    /**
     */
    public Zoom() {
        try {
            r = new Robot();
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            width = (int) d.getWidth();
            height = (int) d.getHeight();
            System.out.println(width + " " + height);
            wnd = new Window(this);
            wnd.setSize(400, 400);
            wnd.setLocation(0, 0);
            wnd.setVisible(true);
        } catch (AWTException e) {
            System.out.println(e);
        }
        Thread t = new Thread();
        t.start();
    }

    public static void main(String[] args) {
        new Zoom();
    }

    @Override
    public void run() {
        while (true) {            
            PointerInfo pi = MouseInfo.getPointerInfo();
            Point p = pi.getLocation();
            int x = (int) p.getX();
            int y = (int) p.getY();

            Graphics g = wnd.getGraphics();
            Rectangle rect =  new Rectangle(x, y, 150, 150);
            BufferedImage img = r.createScreenCapture(rect);
            g.drawImage(img, 0, 0, 250, 250, Color.white, this);
        }
    }

}

在这个输出没有按照预期进行,窗口正常打开但是当我将鼠标悬停在它上面时,它只是没有放大.... enter image description here 由于此图像是打印屏幕,因此它不显示鼠标指针,但它仅在窗口上。

有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

对不起,伙计们,但我已经找到了为什么会发生这种情况的答案。在初始化参数中的线程类时,我应该提供关于应该运行哪个run方法的内容,所以初始化必须是这样的......

Thread t = new Thread(this)