zoukankan      html  css  js  c++  java
  • 拖动去掉边框的JFrame

    似乎业界的程序员都不喜欢用java来开发图形界面,但是因为跨平台的原因,对java的桌面编程非常的感兴趣,想使用它做出一套漂亮的图形界面。

    此篇文章主要介绍,java下通过swing实现win8的磁力铁

    原理:继承java的swing组件,对其进行功能的扩展

    java swing界面的jframe中重生之大文豪,通过setUndecorated(true)方法可以去掉周围的边框,后果是我们没法拖动这个窗口了;以下代码提供了一种方式来解决这个问题:

     

    1. public class ShowMain{  
    2.     public static void main(String[] args) {  
    3.         MyFrame frame = new MyFrame();  
    4.     }  
    5. }  
    6. class MyFrame extends JFrame implements MouseListener,MouseMotionListener{  
    7.     JFrame frame;  
    8.     Container container;  
    9.     int x;  
    10.     int y;  
    11.     int tempX;  
    12.     int tempY;  
    13.     int winX;  
    14.     int winY;  
    15.     int oldX;  
    16.     int oldY;  
    17.       
    18.     public MyFrame() {  
    19.         init();  
    20.     }  
    21.       
    22.     public void init(){               
    23.         frame = this;  
    24.         container = frame.getContentPane();  
    25.         frame.setBounds(300300300300);  
    26.         container.setBackground(Color.BLUE);  
    27.         frame.setUndecorated(true);  
    28.         frame.setVisible(true);  
    29.         frame.addMouseListener(this);  
    30.         frame.addMouseMotionListener(this);  
    31.     }  
    32.   
    33.     @Override  
    34.     public void mouseDragged(MouseEvent e) {  
    35.         Point point = e.getPoint();  
    36.         Rectangle rec = frame.getBounds();  
    37.                   
    38.         winX = (int)rec.getX();  
    39.         winY = (int)rec.getY();       
    40.         x = (int)point.getX();  
    41.         y = (int)point.getY();        
    42.         tempX = x - oldX;  
    43.         tempY = y - oldY;         
    44.           
    45.         frame.setLocation((int)(winX + tempX), (int)(winY + tempY));      
    46.     }  
    47.       
    48.     @Override  
    49.     public void mousePressed(MouseEvent e) {  
    50.         Rectangle rec = frame.getBounds();  
    51.         Point point = e.getPoint();       
    52.         tempX = (int)point.getX();  
    53.         tempY = (int)point.getY();  
    54.         oldX = (int)point.getX();  
    55.         oldY = (int)point.getY();     
    56.     }  
    57.     @Override  
    58.     public void mouseClicked(MouseEvent e) {  
    59.         // TODO Auto-generated method stub        
    60.     }  
    61.     @Override  
    62.     public void mouseEntered(MouseEvent e) {  
    63.         // TODO Auto-generated method stub        
    64.     }  
    65.     @Override  
    66.     public void mouseExited(MouseEvent e) {  
    67.         // TODO Auto-generated method stub        
    68.     }  
    69.     @Override  
    70.     public void mouseReleased(MouseEvent e) {  
    71.         // TODO Auto-generated method stub        
    72.     }  
    73.     @Override  
    74.     public void mouseMoved(MouseEvent e) {  
    75.         // TODO Auto-generated method stub        
    76.     }     
    77. }  

    运行截图(通过鼠标可以拖动一下的方块窗体):

     


  • 相关阅读:
    Python List comprehension列表推导式
    Git
    Python 默认参数 关键词参数 位置参数
    Blog List
    【论文笔记】DeepOrigin: End-to-End Deep Learning for Detection of New Malware Families
    【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior
    Scala入门 【1】
    RocketMQ与Kafka对比(18项差异)
    Kafka简介
    Spark存储管理(读书笔记)
  • 原文地址:https://www.cnblogs.com/haichun/p/3496315.html
Copyright © 2011-2022 走看看