Cet article partage le code spécifique pour le swing pour implémenter la traînée et l'étirement du formulaire pour votre référence. Le contenu spécifique est le suivant
Lorsque vous utilisez SETUDECORATED (true) pour supprimer la barre de titre par JFrame, vous devez écrire les fonctions de glisser-déposer par vous-même.
Vous trouverez ci-dessous les rendus. Mon logiciel de capture d'écran ne peut pas capturer le curseur, sauf le curseur par défaut du système, de sorte que les changements de curseurs dans chaque direction ne se reflètent pas dans la figure.
Le code est le suivant:
importer javax.swing. *; import java.awt. *; / ** * Form Form Drag and Stretch * / public class winResizeDemo {private jframe jf; public winResizedEmo () {jf = new JFrame (); jf.SetUndeCorated (true); // Démarquez la frontière et la barre de titre jf.setLocationRelativeto (null); // définir la fenêtre jf.setsize (400,400); jf.setDefaultCloseOperation (jframe.exit_on_close); ResizeEvent DG = new ResizeEvent (JF); / ** Ajouter deux auditeurs ** / jf.AddMouseListener (DG); jf.addmousmotionListener (DG); jf.setVisible (true); } public static void main (String [] args) {new winResizedemo (); }} importer javax.swing. *; import java.awt. *; Importer java.awt.event.mousEadapter; Importer java.awt.event.mousevent; / ** * Implémentez l'étirement et la traînée dans toutes les directions de la fenêtre. * / classe publique ResizeEvent étend MousEadapter {public jframe jf; Private Point Prepos, Curpos, JFPOS; Double final statique privé = 15,0; // Range de tronçon frontalière Int DragType privé; Final statique privé int drag_move = 1; Final statique privé int drag_up = 2; Final statique privé int drag_upleft = 3; Final statique privé int drag_upright = 4; Final statique privé int drag_left = 5; Final statique privé int drag_right = 6; Final statique privé int drag_bottom = 7; Final statique privé int drag_bottomleft = 8; Final statique privé int drag_bottomright = 9; public resizeevent (jframe jf) {this.jf = jf; } @Override public void Mousreprim (MouseEvent e) {prepos = e.getLocationOnScreen (); } @Override public void MousMoved (MouseEvent e) {areAveck (e.getPoint ()); } @Override public void MouseDragged (MouseEvent e) {curpos = e.getLocationOnScreen (); jfpos = jf.getLocation (); dragaction (); prepos = curpos; } private void dragaction () {switch (dragType) {case drag_move: jf.setLocation (jfpos.x + curpos.x-prépos.x, jfpos.y + curpos.y-prepos.y); casser; Case drag_up: // x La position reste inchangée, les changements de position Y et les modifications de hauteur JF.SetLocation (JFPOS.X, JFPOS.Y + CURPOS.Y-PREPOS.Y); jf.setSize (jf.getWidth (), jf.getheight () - (curpos.y-prepos.y)); casser; case drag_left: // y position reste inchangée, x changements de position, changements de largeur jf.setLocation (jfpos.x + curpos.x-prépos.x, jfpos.y); JF.SetSize (jf.getWidth () - (curpos.x-prépos.x), jf.getheight ()); casser; Case drag_right: // x, y position reste inchangé, la largeur modifie JF.setLocation (jfpos.x, jfpos.y); jf.setSize (jf.getWidth () + (curpos.x-prépos.x), jf.getheight ()); casser; Case drag_bottom: // x, y position reste inchangé, la hauteur change jf.setLocation (jfpos.x, jfpos.y); jf.setSize (jf.getWidth (), jf.getheight () + (curpos.y-prepos.y)); casser; case drag_upleft: // x, y positions changent, h et w tous changent jf.setLocation (jfpos.x + curpos.x-prépos.x, jfpos.y + curpos.y-prepos.y); jf.setSize (jf.getWidth () - (curpos.x-prépos.x), jf.getheight () - (curpos.y-prépos.y)); casser; case drag_bottomright: // x, y Les positions restent inchangées, h et w changent tous jf.setLocation (jfpos.x, jfpos.y); jf.setSize (jf.getWidth () + (curpos.x-prépos.x), jf.getheight () + (curpos.y-prépos.y)); casser; case drag_upright: // x position reste inchangée, y, w, h change jf.setLocation (jfpos.x, jfpos.y + curpos.y-prépos.y); jf.setSize (jf.getWidth () + (curpos.x-prépos.x), jf.getheight () - (curpos.y-prépos.y)); casser; case drag_bottomleft: // y reste inchangé, xwh change jf.setLocation (jfpos.x + curpos.x-prépos.x, jfpos.y); jf.setSize (jf.getWidth () - (curpos.x-prépos.x), jf.getheight () + (curpos.y-prépos.y)); casser; par défaut: pause; }} private booléen areacheck (point p) {if (p.getx () <= largeur && p.gety () <= largeur) {dragType = drag_upleft; jf.setCursor (nouveau curseur (cursor.nw_resize_cursor)); } else if (p.getx ()> largeur && p.getx () <(jf.getWidth () - largeur) && p.gety () <= largeur) {dragType = drag_up; jf.setCursor (nouveau curseur (cursor.n_resize_cursor)); } else if (p.getx ()> = (jf.getWidth () - largeur) && p.gety () <= largeur) {dragType = drag_upright; jf.setCursor (nouveau curseur (cursor.ne_resize_cursor)); } else if (p.getx () <= largeur && p.gety () <(jf.getheight () - largeur) && p.gety ()> largeur) {dragType = drag_left; jf.setCursor (nouveau curseur (cursor.w_resize_cursor)); } else if (p.getx ()> = (jf.getWidth () - Largeth) && p.gety () <(jf.getheight () - largeur) && p.gety ()> largeur) {dragType = drag_right; jf.setCursor (nouveau curseur (cursor.e_resize_cursor)); } else if (p.getx () <= largeur && p.gety ()> = (jf.getheight () - largeur)) {dragType = drag_bottomleft; jf.setCursor (nouveau curseur (cursor.sw_resize_cursor)); } else if (p.getx ()> largeur && p.getx () <(jf.getWidth () - largeur) && p.gety ()> = (jf.getheight () - largeur)) {dragType = drag_bottom; jf.setCursor (nouveau curseur (cursor.s_resize_cursor)); } else if (p.getx ()> = (jf.getwidth () - largeur) && p.gety ()> = (jf.getheight () - largeur)) {dragType = drag_bottomright; jf.setCursor (nouveau curseur (cursor.se_resize_cursor)); } else {dragType = drag_move; jf.setCursor (nouveau curseur (cursor.move_cursor)); retourne false; } return true; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.