Эта статья разделяет конкретный код для Swing для реализации перетаскивания и растяжения формы для вашей ссылки. Конкретный контент заключается в следующем
При использовании setundecorated (true) для удаления панели заголовка с помощью JFrame вы должны написать функции перетаскивания и вытащить самостоятельно.
Ниже приведены визуализации. Мое программное обеспечение для скриншотов не может захватить курсор, кроме курсора системы по умолчанию, поэтому изменения курсоров в каждом направлении не отражаются на рисунке.
Код заключается в следующем:
импортировать javax.swing.*; Импорт java.awt.*; / *** Форма перетаскивает и растягивает*/ public class winresizedemo {private jframe jf; public winresizedemo () {jf = new jframe (); jf.setundecorated (true); // demark граничный и титульный строка Jf.SetLocationRelativeTo (null); // Установить окно jf.setsize (400 400); jf.setDefaultCloseoPeration (jframe.exit_on_close); RESIZEEVEV DG = NEW RESIZEEVEV (JF); / ** Добавить двух слушателей **/ jf.addmouseListener (DG); jf.addmousemotionlistener (DG); jf.setvisible (true); } public static void main (string [] args) {new winresizedemo (); }} импортировать javax.swing.*; Импорт java.awt.*; импортировать java.awt.event.mouseadapter; Импорт java.awt.event.mouseeVent; /*** Реализуйте растяжение и перетаскивание во всех направлениях окна. */ public class relizevent extends mouseadapter {public jframe jf; Private Point Prefos, Curpos, JFPOS; Частный статический окончательный двойной ширину = 15,0; // Рейн -диапазон пограничных растяжений Private Int Dragtype; Приватный статический конечный int drag_move = 1; Частный статический конечный финал int drag_up = 2; Приватный статический конечный int drag_upleft = 3; Частный статический финал int drag_upright = 4; Частный статический конечный финал int drag_left = 5; Частный статический конечный финал int drag_right = 6; Частный статический финал int drag_bottom = 7; Частный статический финал int drag_bottomleft = 8; Частный статический финал int drag_bottomright = 9; public relesizeevent (jframe jf) {this.jf = jf; } @Override public void mousepressed (mouseevent e) {prefos = e.getlocationonscreen (); } @Override public void mousemoved (mouseevent e) {areacheck (e.getPoint ()); } @Override public void mouseDragged (mouseevent e) {curpos = e.getlocationonscreen (); jfpos = jf.getLocation (); DRAGACTION (); prefos = curpos; } private void Dragaction () {switch (dragtype) {case Drag_Move: jf.setLocation (jfpos.x+curpos.x-prepos.x, jfpos.y+curpos.y-prepos.y); перерыв; Case Drag_UP: // x положения остается неизменным, изменения в положении Y и изменения высоты jf.setLocation (jfpos.x, jfpos.y+curpos.y-prepos.y); jf.setsize (jf.getwidth (), jf.getheight ()-(curpos.y-prepos.y)); перерыв; case Drag_left: // y положение остается неизменной, x изменение положения, изменение ширины jf.setlocation (jfpos.x+curpos.x-prepos.x, jfpos.y); jf.setsize (jf.getwidth ()-(curpos.x-prepos.x), jf.getheight ()); перерыв; Case Drag_right: // x, y позиция остается неизменной, изменение ширины jf.setlocation (jfpos.x, jfpos.y); jf.setsize (jf.getwidth ()+(curpos.x-prepos.x), jf.getheight ()); перерыв; case Drag_bottom: // x, y положение остается неизменным, изменение высоты jf.setlocation (jfpos.x, jfpos.y); jf.setsize (jf.getwidth (), jf.getheight ()+(curpos.y-prepos.y)); перерыв; case drag_upleft: // x, y-положения изменение, H и W все изменение 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)); перерыв; case Drag_bottomright: // x, y позиции остаются неизменными, H и W все изменение JF.SetLocation (jfpos.x, jfpos.y); jf.setsize (jf.getWidth ()+(curpos.x-prepos.x), jf.getheight ()+(curpos.y-prepos.y)); перерыв; Case Drag_upright: // x позиция остается неизменной, y, w, h изменяет jf.setlocation (jfpos.x, jfpos.y+curpos.y-prepos.y); jf.setsize (jf.getwidth ()+(curpos.x-prepos.x), jf.getheight ()-(curpos.y-prepos.y)); перерыв; case drag_bottomleft: // y остается неизменным, xwh изменяет jf.setlocation (jfpos.x+curpos.x-prepos.x, jfpos.y); jf.setsize (jf.getwidth ()-(curpos.x-prepos.x), jf.getheight ()+(curpos.y-prepos.y)); перерыв; по умолчанию: перерыв; }} private boolean areacheck (точка P) {if (p.getx () <= fartth && p.gety () <= fartth) {dragtype = drag_upleft; jf.setcursor (новый курсор (cursor.nw_resize_cursor)); } else if (p.getx ()> harth && p.getx () <(jf.getWidth ()-шишка) && p.gety () <= farth) {dragtype = drag_up; jf.setcursor (новый курсор (cursor.n_resize_cursor)); } else if (p.getx ()> = (jf.getwidth ()-farth) && p.gety () <= шишка) {dragtype = drag_upright; jf.setcursor (новый курсор (cursor.ne_resize_cursor)); } else if (p.getx () <= fartth && p.gety () <(jf.getheight ()-farth) && p.gety ()> farth) {dragtype = drag_left; jf.setcursor (новый курсор (cursor.w_resize_cursor)); } else if (p.getx ()> = (jf.getwidth ()-farth) && p.gety () <(jf.getheight ()-farth) && p.gety ()> farth) {dragtype = Drag_right; jf.setcursor (новый курсор (cursor.e_resize_cursor)); } else if (p.getx () <= fartth && p.gety ()> = (jf.getheight ()-шишка)) {dragtype = drag_bottomleft; jf.setcursor (новый курсор (cursor.sw_resize_cursor)); } else if (p.getx ()> harth && p.getx () <(jf.getWidth ()-farth) && p.gety ()> = (jf.getheight ()-farth)) {dragtype = drag_bottom; jf.setcursor (новый курсор (cursor.s_resize_cursor)); } else if (p.getx ()> = (jf.getwidth ()-farth) && p.gety ()> = (jf.getheight ()-farth)) {dragtype = drag_bottomright; jf.setcursor (новый курсор (cursor.se_resize_cursor)); } else {dragtype = drag_move; jf.setcursor (новый курсор (cursor.move_cursor)); вернуть ложь; } вернуть true; }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.