English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تحقيق سحب وتوسيع النافذة باستخدام Swing

شاركت هذا المقال لك كيفية تنفيذ تمرير النافذة والتمدد باستخدام Swing، يمكن للجميع الرجوع إليه، والتفاصيل كالتالي

بعد استخدام setUndecorated(true)، بعد إزالة شريط العنوان من JFrame، يجب كتابة وظيفة التمرير والتمدد الخاصة بي

في الصورة التالية، لا يمكن للبرنامج الذي أستخدمه التقاط صورة سوى الماوس الذكي للنظام، لذلك لا تظهر تغييرات الماوس في جميع الاتجاهات في الصورة

كود كما يلي:

import javax.swing.*; 
import java.awt.*; 
/** 
 * تمرير النافذة والتمدد 
 */ 
public class winReSizeDemo { 
 private JFrame jf; 
 public winReSizeDemo(){ 
  jf=new JFrame(); 
  jf.setUndecorated(true); // إزالة الحواف والشريط العلوى 
  jf.setLocationRelativeTo(null); // النافذة في منتصف الشاشة 
  jf.setSize(400,400); 
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  reSizeEvent dg = new reSizeEvent(jf); 
  /** إضافة مشغلاتين */ 
  jf.addMouseListener(dg); 
  jf.addMouseMotionListener(dg); 
  jf.setVisible(true); 
 } 
 public static void main(String [] args){ 
  new winReSizeDemo(); 
 } 
} 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
/** 
 /* تحقيق تمدد وتحريك النافذة في جميع الاتجاهات */ 
 */ 
public class reSizeEvent extends MouseAdapter{ 
 public JFrame jf; 
 private Point prePos,curPos,jfPos; 
 private static final double BREADTH = 15.0; // نطاق تمدد الحدود 
 private int dragType; 
 private static final int DRAG_MOVE = 1; 
 private static final int DRAG_UP = 2; 
 private static final int DRAG_UPLEFT = 3; 
 private static final int DRAG_UPRIGHT = 4; 
 private static final int DRAG_LEFT = 5; 
 private static final int DRAG_RIGHT = 6; 
 private static final int DRAG_BOTTOM = 7; 
 private static final int DRAG_BOTTOMLEFT = 8; 
 private static final int DRAG_BOTTOMRIGHT = 9; 
 public reSizeEvent(JFrame jf){ 
  this.jf = jf; 
 } 
 @Override 
 public void mousePressed(MouseEvent e){ 
  prePos = e.getLocationOnScreen(); 
 } 
 @Override 
 public void mouseMoved(MouseEvent e){ 
  areaCheck(e.getPoint()); 
 } 
 @Override 
 public void mouseDragged(MouseEvent e){ 
  curPos = e.getLocationOnScreen(); 
  jfPos = jf.getLocation(); 
  dragAction(); 
  prePos = curPos; 
 } 
 private void dragAction(){ 
  switch(dragType){ 
   حالة سحب الحركة: 
    jf.setLocation(jfPos.x+curPos.x-prePos.x, 
      jfPos.y+curPos.y-prePos.y); 
    break; 
   حالة سحب أعلى://الخطوط x ثابتة،الخطوط y تتغير،Height تتغير 
    jf.setLocation(jfPos.x, 
      jfPos.y+curPos.y-prePos.y); 
    jf.setSize(jf.getWidth(), jf.getHeight()-(curPos.y-prePos.y)); 
    break; 
   حالة سحب يسار://الخطوط y ثابتة،الخطوط x يتغير،width يتغير 
    jf.setLocation(jfPos.x+curPos.x-prePos.x, 
      jfPos.y); 
    jf.setSize(jf.getWidth()-(curPos.x-prePos.x), jf.getHeight()); 
    break; 
   حالة سحب يمين://الخطوط x,y ثابتة،width يتغير 
    jf.setLocation(jfPos.x, 
      jfPos.y); 
    jf.setSize(jf.getWidth()+(curPos.x-prePos.x), jf.getHeight()); 
    break; 
   حالة سحب أسفل://الخطوط x,y ثابتة،Height تتغير 
    jf.setLocation(jfPos.x, 
      jfPos.y); 
    jf.setSize(jf.getWidth(), jf.getHeight()+(curPos.y-prePos.y)); 
    break; 
   حالة سحب أعلى يسار://الخطوط x,y تتغير،w,h تتغير 
    jf.setLocation(jfPos.x+curPos.x-prePos.x, 
      jfPos.y+curPos.y-prePos.y); 
    jf.setSize(jf.getWidth()-(curPos.x-prePos.x), jf.getHeight()-(curPos.y-prePos.y)); 
    break; 
   حالة سحب أسفل يمين://الخطوط x,y ثابتة،w,h تتغير 
    jf.setLocation(jfPos.x, 
      jfPos.y); 
    jf.setSize(jf.getWidth()+(curPos.x-prePos.x), jf.getHeight()+(curPos.y-prePos.y)); 
    break; 
    
    jf.setLocation(jfPos.x, 
      jfPos.y+curPos.y-prePos.y); 
    jf.setSize(jf.getWidth()+(curPos.x-prePos.x), jf.getHeight()-(curPos.y-prePos.y)); 
    break; 
    
    jf.setLocation(jfPos.x+curPos.x-prePos.x, 
      jfPos.y); 
    jf.setSize(jf.getWidth()-(curPos.x-prePos.x), jf.getHeight()+(curPos.y-prePos.y)); 
    break; 
   default: 
    break; 
  } 
 } 
 private boolean areaCheck(Point p){ 
  if(p.getX()<=BREADTH && p.getY()<=BREADTH){ 
   dragType = DRAG_UPLEFT; 
   jf.setCursor(new Cursor(Cursor.NW_RESIZE_CURSOR)); 
  } 
    && p.getX() < (jf.getWidth() - BREADTH)) 
    && p.getY()<=BREADTH){ 
   dragType = DRAG_UP; 
   jf.setCursor(new Cursor(Cursor.N_RESIZE_CURSOR)); 
  }else if(p.getX()>=(jf.getWidth()-BREADTH) && p.getY()<=BREADTH){ 
   dragType = DRAG_UPRIGHT; 
   jf.setCursor(new Cursor(Cursor.NE_RESIZE_CURSOR)); 
  } 
    && p.getY()<(jf.getHeight()-BREADTH) 
    && p.getY()>BREADTH{ 
   dragType = DRAG_LEFT; 
   jf.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR)); 
  } 
    && p.getY()<(jf.getHeight()-BREADTH) 
    && p.getY()>BREADTH{ 
   dragType = DRAG_RIGHT; 
   jf.setCursor(new Cursor(Cursor.E_RESIZE_CURSOR)); 
  } 
    && p.getY() >= (jf.getHeight() - BREADTH)){ 
   dragType = DRAG_BOTTOMLEFT; 
   jf.setCursor(new Cursor(Cursor.SW_RESIZE_CURSOR)); 
  } 
    && p.getX() < (jf.getWidth() - BREADTH)) 
    && p.getY() >= (jf.getHeight() - BREADTH)){ 
   dragType = DRAG_BOTTOM; 
   jf.setCursor(new Cursor(Cursor.S_RESIZE_CURSOR)); 
  } 
    && p.getY() >= (jf.getHeight() - BREADTH)){ 
   dragType = DRAG_BOTTOMRIGHT; 
   jf.setCursor(new Cursor(Cursor.SE_RESIZE_CURSOR)); 
  } 
   dragType = DRAG_MOVE; 
   jf.setCursor(new Cursor(Cursor.MOVE_CURSOR)); 
   return false; 
  } 
  return true; 
 } 
} 

هذا هو نهاية محتوى هذا المقال، آمل أن يكون قد ساعد في تعلمكم، وأتمنى أن تدعموا تعليمات التهليل.

البيان: محتويات هذا المقال تم جمعها من الإنترنت، حقوق النشر تخص المالك الأصلي، المحتوى تم تقديمه من قبل مستخدمي الإنترنت بشكل تلقائي، هذا الموقع لا يملك حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل أي مسؤولية قانونية متعلقة بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فالرجاء إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (الرجاء استبدال # ب @ عند إرسال البريد الإلكتروني) للإبلاغ، وقدم الدليل على الدليل، وإذا تم التحقق من ذلك، سيتم حذف المحتوى المشبوه فورًا.

أنت قد تعجب بهذا