이 기사에서는 Java가 구현 한 사진을 선택하고 드래그하고 드롭 한 그림을 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
나는 오늘 포럼에서 게시물을 보았고 스윙에서지도를 드래그하는 것과 같은 사진을 끌고 떨어 뜨리기를 희망합니다. 다음은 기본 아이디어를 제공하는 가장 간단한 구현입니다.
import javax.swing.*; import javax.swing.filechooser.filenameextensionfilter; import java.awt.*; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.awt.event.mousemotionlistener;/*evai ot java. 양식. 사용 방법 : 형식의 빈 공간을 두 번 클릭하여 그림 대화 상자를 열십시오. 그림을 열면 형태로 그림을 드래그 앤 드롭 할 수 있습니다. * / @suppresswarnings ( "Serial") Public Class DragingFrame은 jframe { /*** 생성자** @throws HeadlessException? ? ? */ public dragingframe ()는 HeadlessException {this.setDefaultCloseOperation (exit_on_close); getContentPane (). SetLayout (New BorderLayout ()); getContentPane (). add (new ImagePanel (), BorderLayout.Center); } // 프로그램 항목 public static void main (string [] args)은 예외 {uimanager.setLookandFeel (uimanager.getSystemLookandFeelClassName ()); dragingframe frame = new DragingFrame (); frame.setsize (400, 300); frame.setLocation (300, 300); frame.setResizable (false); frame.settitle ( "www.vevb.com을 두 번 클릭하여 그림을 열고 드래그 앤 드롭"); frame.setVisible (true); }}/*** 그림을 드래그 앤 드롭 할 수있는 패널*/@suppresswarnings ( "Serial") 클래스 ImagePanel은 JPanel {private dragstatus status = dragstatus.ready; // 상태를 드래그 비공개 이미지 이미지; // 프라이버시 포인트로 표시되는 이미지 이미지 ImagePosition = New Point (0, 0), // 이미지의 현재 위치 imageStartPosition = new Point (0, 0), // 각 드래그의 시작시 이미지의 위치 (즉, 마지막 드래그 후 위치) mousestartPosition; // 각 드래그의 시작시 마우스의 위치 imagePanel () {addMousElistener (new MousElistener () {// 마우스 공개 void mouseclicked (mouseevent e)를 두 번 클릭하면 이미지를 엽니 다. 공개적으로 dragstatus.dragging) {status = dragstatus.ready; AddMousEmotionListener (new MouseMotionListener () {// Java는 드래그 앤 드롭 이벤트가 있습니다.이 이벤트에서 이미지 위치를 이동하여 공개 void mousedRagged (mouseevent e) {if (status == dragstatus.dragging) {moveImage (e.getPoint ()); } /*** 사진을 움직입니다. 실제로 그리기 작업은 PaintComponent ()에서 수행되는데, 여기서 이미지 위치를 계산 한 다음 메소드를 호출합니다. * * @param 포인트 현재 마우스 위치 */ private void moveImage (포인트 포인트) {// 그림의 현재 위치는 그림의 시작 위치와 마우스 위치의 오프셋과 같습니다. imagePosition.setLocation (imageStartPosition.getx () + (point.getx () - MousestArtPosition.getx ()), imageStartPosition.gety () + (point.gety () -MousEstarTposition.Gety ())); 리 페인트 (); } // 이미지를 엽니 다 파일 = createFileChooser (). getSelectedFile (); if (file! = null) {image = toolkit.getDefaultToolKit (). getImage (file.getAbsolutepath ()); if (image! = null) {this.repaint (); }}} // 열린 파일 만들기 대화 상자 개인 jfilechooser createFileChooser () {jfileChooser chooSer = new JfileChooser (); Chooser.setDialogTitle ( "이미지 파일을 선택하십시오 ..."); chooser.addchoosableFilter (new filenameextensionFilter ( "공통 이미지 형식", "JPG", "JPEG", "gif", "png")); chooser.showopendialog (this); 반환 선택자; } @Override Protected Void PaintComponent (그래픽 g) {super.paintcomponent (g); if (image! = null) {G.DrawImage (image, (int) imagePosition.getx (), (int) imagePosition.gety (), this); }} private enum dragstatus {ready, dragging}}}실행 효과 :
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.