哎呀..我那個近視啊...近視的我快連1厘米進的電腦屏幕上的字都看不清了..
怎么辦呢??當然是用放大鏡啦~~~~~~ 攝影機 !!向我這看!!
效果圖:

開始代碼啦:
package Magnifier;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Magnifier extends JFrame


{
private Container container = getContentPane();

private int setCoordinateX;

private int setCoordinateY;

private int absoluteCoordinateX;

private int absoluteCoordinateY;

private int relativeCoordinateXWhenMousePressed;

private int relativeCoordinateYWhenMousePressed;

//標記鼠標是否按下。如果按下則為true,否則為false
private boolean mousePressedNow;

// 放大鏡尺寸
private int magnifierSize = 300;

//放大鏡內容面板
private MagnifierPanel magnifierPanel = new MagnifierPanel(magnifierSize);

//這個窗體就是放大鏡 你可以自己更改這個窗體..
public Magnifier()

{
setUndecorated(true); // 這個就是窗口的邊緣 false的話就失效果了
setResizable(false);
container.add(magnifierPanel);
addMouseListener(new MouseFunctions());
addMouseMotionListener(new MouseMotionFunctions());
updateSize(magnifierSize);
this.setVisible(true);
}

public static void main(String arg[])

{
// JFrame
Magnifier magnifier = new Magnifier();
magnifier.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void updateSize(int magnifierSize)

{
magnifierPanel.setMagnifierSize(magnifierSize + 100);
setSize(magnifierSize + 100, magnifierSize + 100);
validate();
}

private class MouseFunctions extends MouseAdapter

{
public void mousePressed(MouseEvent e)

{
if (e.getClickCount() == 1)

{// 如果鼠標左鍵點了一下,說明按住了窗體
mousePressedNow = true;
relativeCoordinateXWhenMousePressed = e.getX();
relativeCoordinateYWhenMousePressed = e.getY();
}
}

public void mouseReleased(MouseEvent e)

{
mousePressedNow = false;
}
}

private class MouseMotionFunctions extends MouseMotionAdapter

{
public void mouseDragged(MouseEvent e)

{
if (mousePressedNow == true)

{// 如果此時鼠標按下了,說明在拖拽窗體
absoluteCoordinateX = Magnifier.this
.getLocationOnScreen().x
+ e.getX();
absoluteCoordinateY = Magnifier.this
.getLocationOnScreen().y
+ e.getY();
setCoordinateX = absoluteCoordinateX
- relativeCoordinateXWhenMousePressed;
setCoordinateY = absoluteCoordinateY
- relativeCoordinateYWhenMousePressed;
magnifierPanel.setMagnifierLocation(setCoordinateX,
setCoordinateY);
setLocation(setCoordinateX, setCoordinateY);
}
}
}
}

class MagnifierPanel extends JPanel


{
private Image screenImage;

private int magnifierSize;

private int locationX;

private int locationY;

private Robot robot;

public MagnifierPanel(int magnifierSize)

{
try

{
robot = new Robot();
}

catch (AWTException e)
{
}
screenImage = robot.createScreenCapture(new Rectangle(0, 0, Toolkit
.getDefaultToolkit().getScreenSize().width, Toolkit
.getDefaultToolkit().getScreenSize().height));
this.magnifierSize = magnifierSize;
}

public void setMagnifierLocation(int locationX, int locationY)

{
//X坐標
this.locationX = locationX;
//Y坐標
this.locationY = locationY;
repaint(); // 注意重畫控件
}

public void setMagnifierSize(int magnifierSize)

{
this.magnifierSize = magnifierSize;
}

public void paintComponent(Graphics g)

{
super.paintComponent((Graphics2D) g);
// 關鍵處理代碼
g.drawImage(
screenImage, // 要畫的圖片
0, // 目標矩形的第一個角的x坐標
0, // 目標矩形的第一個角的y坐標
magnifierSize, // 目標矩形的第二個角的x坐標
magnifierSize, // 目標矩形的第二個角的y坐標
locationX + (magnifierSize / 4), // 源矩形的第一個角的x坐標
locationY + (magnifierSize / 4), // 源矩形的第一個角的y坐標
locationX + (magnifierSize / 4 * 3), // 源矩形的第二個角的x坐標
locationY + (magnifierSize / 4 * 3), // 源矩形的第二個角的y坐標
this
);
}
}

