<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那里  回復  更多評論   

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

    導航

    統計

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團隊

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    swingchina 專業搞Swing的網站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品一本到99热免费| 日本高清不卡中文字幕免费| 国产婷婷成人久久Av免费高清| 久久精品国产亚洲Aⅴ蜜臀色欲| 日本一区二区三区在线视频观看免费 | 两个人看的www免费视频| 亚洲午夜精品久久久久久浪潮 | 亚洲日韩人妻第一页| 又长又大又粗又硬3p免费视频| 亚洲精品网站在线观看不卡无广告| 色哟哟国产精品免费观看 | 久久亚洲精品人成综合网| 午夜精品射精入后重之免费观看| 亚洲国产精品久久久久久| 99久久免费中文字幕精品| 亚洲无人区视频大全| 99久久综合国产精品免费| 亚洲国产精品成人AV在线| 又黄又爽的视频免费看| igao激情在线视频免费| 亚洲gv白嫩小受在线观看| 亚洲毛片免费视频| 亚洲欧美日韩一区二区三区| 国产一区二区三区免费在线观看 | 免费观看四虎精品成人| 亚洲精品乱码久久久久久按摩| 污视频在线免费观看| 亚洲AV男人的天堂在线观看| 亚洲国产精品国产自在在线| 免费国产99久久久香蕉| 亚洲香蕉久久一区二区| 日本中文一区二区三区亚洲 | 亚洲AV无码一区二区三区久久精品| 亚洲成?Ⅴ人在线观看无码| 国产永久免费高清在线| 亚洲91精品麻豆国产系列在线| 国产精品免费播放| 麻豆精品不卡国产免费看| 亚洲国产乱码最新视频| 国产亚洲一区二区三区在线不卡| 91精品成人免费国产片|