[Java] java 窗体吸附在屏幕边缘 →→→→→进入此内容的聊天室

来自 , 2021-04-05, 写在 Java, 查看 137 次.
URL http://www.code666.cn/view/766d856e
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class WindowSnapper extends ComponentAdapter {
  5.  
  6.     private boolean locked = false;
  7.     private int snap_distance = 50;
  8.  
  9.     public void componentMoved(ComponentEvent evt) {
  10.         if(locked) return;
  11.         Dimension size = Toolkit.getDefaultToolkit( ).getScreenSize( );
  12.         int nx = evt.getComponent( ).getX( );
  13.         int ny = evt.getComponent( ).getY( );
  14.         // top
  15.         if(ny < 0+snap_distance) {
  16.             ny = 0;
  17.         }
  18.         // left
  19.         if(nx < 0+snap_distance) {
  20.             nx = 0;
  21.         }
  22.         // right
  23.         if(nx > size.getWidth( ) - evt.getComponent( ).getWidth( ) -
  24.                 snap_distance) {
  25.             nx = (int)size.getWidth( )-evt.getComponent( ).getWidth( );
  26.         }
  27.         // bottom
  28.         if(ny > size.getHeight( ) - evt.getComponent( ).getHeight( ) -
  29.                 snap_distance) {
  30.             ny = (int)size.getHeight( )-evt.getComponent( ).getHeight( );
  31.         }
  32.  
  33.         // make sure we don't get into a recursive loop when the
  34.         // set location generates more events
  35. locked = true;
  36.         evt.getComponent( ).setLocation(nx,ny);
  37.         locked = false;
  38.     }
  39.  
  40.        public static void main(String[] args) {
  41.            JFrame frame = new JFrame("Hack #33: Window Snapping");
  42.            JLabel label = new JLabel(
  43.               "Move this window's titlebar to demonstrate screen edge snapping.");
  44.  
  45.              frame.getContentPane( ).add(label);  
  46.              frame.pack( );
  47.  
  48.              frame.addComponentListener(new WindowSnapper( ));
  49.              frame.setVisible(true);
  50.        }
  51. }
  52.  
  53. //源代码片段来自云代码http://yuncode.net
  54.                        

回复 "java 窗体吸附在屏幕边缘"

这儿你可以回复上面这条便签

captcha