Este artículo comparte el código específico para Swing para implementar arrastre y estiramiento de formulario para su referencia. El contenido específico es el siguiente
Cuando usa SetUndeCorated (verdadero) para eliminar la barra de título de Jframe, debe escribir las funciones de arrastrar y extraer por sí misma.
A continuación se muestran las representaciones. Mi software de captura de pantalla no puede capturar el cursor, excepto el cursor predeterminado del sistema, por lo que los cambios en los cursores en cada dirección no se reflejan en la figura.
El código es el siguiente:
import javax.swing.*; import java.awt.*; / *** Forma de arrastre y estiramiento*/ public class winResizedemo {private jframe jf; public WinResizedemo () {jf = new Jframe (); JF.SetUndeCorated (true); // Demark el límite y el título Bar Jf.setLocationRelativeto (nulo); // Establezca la ventana jf.setsize (400,400); jf.setDefaultCloseOperation (jframe.exit_on_close); resizeEvent dg = new ResizeEvent (JF); / ** Agregue dos oyentes **/ jf.addmouselistener (DG); jf.addmousemotionListener (DG); JF.SetVisible (verdadero); } public static void main (string [] args) {new WinResizedemo (); }} import javax.swing.*; import java.awt.*; import java.awt.event.mouseadapter; import java.awt.event.mousevent; /*** Implementar estiramiento y arrastre en todas las direcciones de la ventana. */ public class resizeEvent extiende Mouseadapter {public Jframe jf; Preparación de puntos privados, curpos, JFPO; Private static final Doble amplitud = 15.0; // Border estiramiento Rango privado int dragType; Private estático final int drag_move = 1; Private estático final int drag_up = 2; Private estático final int drag_Upleft = 3; Private estático final int drag_upright = 4; Private estático final int drag_left = 5; Private estático final int drag_right = 6; Private estático final int drag_bottom = 7; Private estático final int drag_bottomleft = 8; Private estático final int drag_bottomight = 9; public resizeEvent (jframe jf) {this.jf = jf; } @Override public void MousePressed (MouseEvent E) {prepos = e.getLocationScreen (); } @Override public void mouseMoved (MouseEvent E) {Areacheck (E.GetPoint ()); } @Override public void Mousedragged (MouseEvent E) {curpos = e.getLocationScreen (); jfpos = jf.getLocation (); dragAction (); preposte = curpos; } private void dragAction () {switch (dragType) {case drag_move: jf.setLocation (jfpos.x+curpos.x-prepos.x, jfpos.y+curpos.y-prepos.y); romper; Case drag_up: // x La posición permanece sin cambios, y los cambios de posición y los cambios de altura JF.SetLocation (jfpos.x, jfpos.y+curpos.y-prepos.y); jf.setsize (jf.getWidth (), jf.getheight ()-(curpos.y-prepos.y)); romper; Case drag_left: // y La posición permanece sin cambios, X cambia de posición, cambia de ancho JF.SetLocation (jfpos.x+curpos.x-prepos.x, jfpos.y); jf.setsize (jf.getWidth ()-(curpos.x-prepos.x), jf.getheight ()); romper; Case drag_right: // x, y la posición permanece sin cambios, el ancho cambia jf.setLocation (jfpos.x, jfpos.y); jf.setsize (jf.getWidth ()+(curpos.x-prepos.x), jf.getheight ()); romper; Case drag_bottom: // x, la posición y permanece sin cambios, los cambios de altura jf.setLocation (jfpos.x, jfpos.y); jf.setsize (jf.getWidth (), jf.getheight ()+(curpos.y-prepos.y)); romper; Case drag_upleft: // x, y las posiciones cambian, H y W todos cambian 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)); romper; Case drag_bottomright: // x, y las posiciones permanecen sin cambios, H y W todos cambian jf.setLocation (jfpos.x, jfpos.y); jf.setsize (jf.getWidth ()+(curpos.x-prepos.x), jf.getheight ()+(curpos.y-prepos.y)); romper; Case drag_upright: // x La posición permanece sin cambios, y, w, h cambia jf.setLocation (jfpos.x, jfpos.y+curpos.y-prepos.y); jf.setsize (jf.getWidth ()+(curpos.x-prepos.x), jf.getheight ()-(curpos.y-prepos.y)); romper; Case drag_bottomleft: // y permanece sin cambios, xwh cambia jf.setLocation (jfpos.x+curpos.x-prepos.x, jfpos.y); jf.setsize (jf.getWidth ()-(curpos.x-prepos.x), jf.getheight ()+(curpos.y-prepos.y)); romper; predeterminado: ruptura; }} private boolean Areacheck (punto p) {if (p.getx () <= obsth && p.gety () <= amplio) {dragType = drag_upleft; jf.setCursor (nuevo cursor (cursor.nw_resize_cursor)); } else if (p.getx ()> amplth && p.getx () <(jf.getWidth ()-amplio) && p.gety () <= amplth) {dragType = drag_up; jf.setCursor (nuevo cursor (cursor.n_resize_cursor)); } else if (p.getx ()> = (jf.getWidth ()-amplio) && p.gety () <= amplth) {dragType = drag_upright; jf.setCursor (nuevo cursor (cursor.ne_resize_cursor)); } else if (p.getx () <= amplth && p.gety () <(jf.getheight ()-amplio) && p.gety ()> amplth) {dragType = drag_left; jf.setCursor (nuevo cursor (cursor.w_resize_cursor)); } else if (p.getx ()> = (jf.getWidth ()-amplio) && p.gety () <(jf.getheight ()-amplio) && p.gety ()> amplth) {dragType = drag_right; jf.setCursor (nuevo cursor (cursor.e_resize_cursor)); } else if (p.getx () <= amplth && p.gety ()> = (jf.getheight ()-amplio)) {dragType = dragT_bottomleft; jf.setCursor (nuevo cursor (cursor.sw_resize_cursor)); } else if (p.getx ()> amplth && p.getx () <(jf.getWidth ()-amplio) && p.gety ()> = (jf.getheight ()-amplio)) {dragType = drag_bottom; jf.setCursor (nuevo cursor (cursor.s_resize_cursor)); } else if (p.getx ()> = (jf.getWidth ()-amplio) && p.gety ()> = (jf.getheight ()-amplio)) {dragType = dragt_bottomight; JF.SetCursor (nuevo cursor (cursor.se_resize_cursor)); } else {dragType = drag_move; jf.setCursor (nuevo cursor (cursor.move_cursor)); devolver falso; } return verdadero; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.