<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小試菜刀(Swing放大鏡)

    哎呀..我那個近視啊...近視的我快連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(00, 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
         );
       }

    }


    posted on 2008-05-21 18:09 相信 閱讀(1151) 評論(4)  編輯  收藏 所屬分類: Swing文章

    評論

    # re: 小試菜刀(Swing放大鏡) 2008-05-21 19:11 lzw

    功能還不錯,就是效果比較差。  回復  更多評論   

    # re: 小試菜刀(Swing放大鏡) 2008-05-21 19:12 相信

    一起學習...我也是個Swing菜鳥  回復  更多評論   

    # re: 小試菜刀(Swing放大鏡) 2008-08-23 13:25 張相

    不錯啊!以后要學習學習!  回復  更多評論   

    # re: 小試菜刀(Swing放大鏡) 2010-06-06 22:06 大師傅

    這個是有問題的 就是只能截取一次屏幕 我新開個界面什么的 顯示還是原來的 主要就在于Robot那里  回復  更多評論   

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團隊

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    swingchina 專業搞Swing的網站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 蜜桃视频在线观看免费视频网站WWW| 理论秋霞在线看免费| 99re6在线视频精品免费下载| 亚洲精品自在在线观看| 又黄又大的激情视频在线观看免费视频社区在线 | 免费精品国产自产拍在| 亚洲午夜精品一区二区公牛电影院| 91热久久免费精品99| 亚洲日本国产精华液| 日韩毛片免费无码无毒视频观看| 性xxxx黑人与亚洲| 在线A级毛片无码免费真人| 亚洲精华国产精华精华液网站| 午夜电影免费观看| 羞羞网站免费观看| 2048亚洲精品国产| 免费观看在线禁片| 亚洲第一永久在线观看| 成年人免费观看视频网站| 理论秋霞在线看免费| 亚洲热线99精品视频| 97在线视频免费公开观看| 亚洲成在人线中文字幕| 在线观看国产情趣免费视频| 污污的视频在线免费观看| 亚洲无线码在线一区观看| 曰批视频免费40分钟试看天天 | 亚洲精品V欧洲精品V日韩精品 | 免费A级毛片无码视频| 亚洲一区二区三区久久久久| 永久免费观看的毛片的网站| 4hu四虎免费影院www| 亚洲色欲或者高潮影院| 日本媚薬痉挛在线观看免费| 中文在线观看永久免费| 亚洲国产日韩在线一区| 亚洲国产精品碰碰| 久久免费看黄a级毛片| 国产91成人精品亚洲精品| 久久噜噜噜久久亚洲va久| 蜜桃视频在线观看免费网址入口|