最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)鼠標(biāo)拖拽移動界面組件

 更新時間:2014年09月14日 10:47:33   投稿:hebedich  
在Java中,F(xiàn)rame或者JFrame自身已經(jīng)實現(xiàn)了鼠標(biāo)拖拽標(biāo)題欄移動窗口的功能。但是Jframe的樣式實在無法令人滿意,那你又該怎么實現(xiàn)鼠標(biāo)拖拽移動窗口的目的呢?今天我們來探討下

  默認(rèn)的,F(xiàn)rame或者JFrame自身已經(jīng)實現(xiàn)了鼠標(biāo)拖拽標(biāo)題欄移動窗口的功能。

  只是,當(dāng)你不滿意java的JFrame樣式,隱藏了標(biāo)題欄和邊框,又或者干脆直接使用JWindow,那你又該怎么實現(xiàn)鼠標(biāo)拖拽移動窗口的目的呢?最開始,我簡單的在mouseDragged方法里frame.setLocation(e.getX(), e.getY()),結(jié)果,frame拖拽的時候不停地閃爍,位置在屏幕上不斷跳動。后來網(wǎng)上查資料,找到了答案。

 這里給一個簡單的示例,一看就明白:

 package com.jebysun.test.globalhotkey;
 
 import java.awt.Color;
 import java.awt.Cursor;
 import java.awt.Point;
 import java.awt.event.MouseEvent;
 
 import javax.swing.JLabel;
 import javax.swing.JWindow;
 import javax.swing.event.MouseInputListener;
 
 /**
 * 自定義程序窗口,鼠標(biāo)可拖拽移動其位置。
 * @author Jeby Sun
 *
 */
 public class MyFrame extends JWindow {
 
   private static final long serialVersionUID = 1L;
   
   JLabel titleLbl;
   
   public MyFrame() {
     //設(shè)置背景顏色不能直接調(diào)用其setBackground方法,而要設(shè)置其ContentPane的背景顏色。
     this.getContentPane().setBackground(new Color(0x99FF66));
     this.setBounds(100,100,600,400);
     this.setLayout(null);
     
     titleLbl = new JLabel(" 自定義窗口標(biāo)題欄");
     titleLbl.setOpaque(true);
     titleLbl.setBackground(new Color(0x66CC00));
     titleLbl.setBounds(0, 0, 600, 30);
     this.add(titleLbl);
     //鼠標(biāo)事件處理類
     MouseEventListener mouseListener = new MouseEventListener(this);
     titleLbl.addMouseListener(mouseListener);
     titleLbl.addMouseMotionListener(mouseListener);
     
     this.setVisible(true);
   }
 
   /**
   * 鼠標(biāo)事件處理
   * @author Jeby Sun
   *
   */
   class MouseEventListener implements MouseInputListener {
     
     Point origin;
     //鼠標(biāo)拖拽想要移動的目標(biāo)組件
     MyFrame frame;
     
     public MouseEventListener(MyFrame frame) {
       this.frame = frame;
       origin = new Point();
     }
     
     @Override
     public void mouseClicked(MouseEvent e) {}
 
     /**
     * 記錄鼠標(biāo)按下時的點
     */
     @Override
     public void mousePressed(MouseEvent e) {
       origin.x = e.getX(); 
       origin.y = e.getY();
     }
 
     @Override
     public void mouseReleased(MouseEvent e) {}
 
     /**
     * 鼠標(biāo)移進(jìn)標(biāo)題欄時,設(shè)置鼠標(biāo)圖標(biāo)為移動圖標(biāo)
     */
     @Override
     public void mouseEntered(MouseEvent e) {
       this.frame.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
     }
     
     /**
     * 鼠標(biāo)移出標(biāo)題欄時,設(shè)置鼠標(biāo)圖標(biāo)為默認(rèn)指針
     */
     @Override
     public void mouseExited(MouseEvent e) {
       this.frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     }
 
     /**
     * 鼠標(biāo)在標(biāo)題欄拖拽時,設(shè)置窗口的坐標(biāo)位置
     * 窗口新的坐標(biāo)位置 = 移動前坐標(biāo)位置+(鼠標(biāo)指針當(dāng)前坐標(biāo)-鼠標(biāo)按下時指針的位置)
     */
     @Override
     public void mouseDragged(MouseEvent e) {
       Point p = this.frame.getLocation();
       this.frame.setLocation(
         p.x + (e.getX() - origin.x), 
         p.y + (e.getY() - origin.y)); 
     }
 
     @Override
     public void mouseMoved(MouseEvent e) {}
     
   }
   
   public static void main(String[] args) {
     new MyFrame();
   }
 
 }

相關(guān)文章

  • 全面解析Spring Security 內(nèi)置 Filter

    全面解析Spring Security 內(nèi)置 Filter

    這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 詳解java中的static關(guān)鍵字

    詳解java中的static關(guān)鍵字

    這篇文章主要介紹了java中的static關(guān)鍵字的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • JAVA多種方法實現(xiàn)字符串反轉(zhuǎn)

    JAVA多種方法實現(xiàn)字符串反轉(zhuǎn)

    大家好,本篇文章主要講的是JAVA多種方法實現(xiàn)字符串反轉(zhuǎn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Java如何做帶復(fù)選框的菜單實例代碼

    Java如何做帶復(fù)選框的菜單實例代碼

    大家好,本篇文章主要講的是Java如何做帶復(fù)選框的菜單實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于mybatis-plus QueryWrapper 排序的坑

    基于mybatis-plus QueryWrapper 排序的坑

    這篇文章主要介紹了mybatis-plus QueryWrapper 排序的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關(guān)于springboot加載yml配置文件的no字段自動轉(zhuǎn)義問題

    關(guān)于springboot加載yml配置文件的no字段自動轉(zhuǎn)義問題

    這篇文章主要介紹了關(guān)于springboot加載yml配置文件的no字段自動轉(zhuǎn)義問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • IO中flush()函數(shù)的使用代碼示例

    IO中flush()函數(shù)的使用代碼示例

    這篇文章主要介紹了IO中flush()函數(shù)的使用代碼示例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • idea如何解決commit代碼時一直code Analyze加載的問題

    idea如何解決commit代碼時一直code Analyze加載的問題

    文章介紹了解決Git提交代碼時出現(xiàn)codeAnalyze加載卡頓問題的方法,即關(guān)閉IDEA中的相關(guān)設(shè)置選項,作者分享個人經(jīng)驗,希望對大家有所幫助,并鼓勵支持腳本之家
    2025-01-01
  • SSM框架搭建圖文教程(推薦)

    SSM框架搭建圖文教程(推薦)

    下面小編就為大家?guī)硪黄猄SM框架搭建圖文教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解Spring的@Value作用與使用場景

    詳解Spring的@Value作用與使用場景

    這篇文章主要介紹了詳解Spring的@Value作用與使用場景,Spring為大家提供許多開箱即用的功能,@Value就是一個極其常用的功能,它能將配置信息注入到bean中去,需要的朋友可以參考下
    2023-05-05

最新評論

应城市| 平江县| 隆子县| 如皋市| 伊宁市| 乌鲁木齐县| 泸溪县| 彰化县| 天津市| 济源市| 咸宁市| 汝城县| 安徽省| 武义县| 柳河县| 娄烦县| 镇安县| 永新县| 沧州市| 西昌市| 诸城市| 湾仔区| 青岛市| 手游| 肥东县| 庆城县| 厦门市| 宝坻区| 汝州市| 岚皋县| 虎林市| 龙里县| 阿拉善右旗| 肇庆市| 精河县| 丰镇市| 桐柏县| 富宁县| 伽师县| 桐乡市| 云梦县|