บทความนี้อธิบายฟังก์ชั่นพาเนลที่สามารถเลือกและลากและทิ้งรูปภาพที่ใช้โดย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ฉันเห็นโพสต์ในฟอรัมวันนี้และหวังว่าจะลากและวางรูปภาพเช่นการลากแผนที่ในการแกว่ง นี่คือการใช้งานที่ง่ายที่สุดโดยให้แนวคิดพื้นฐาน
นำเข้า Javax.swing.*; นำเข้า Javax.swing.filechooser.filenameextensionFilter; นำเข้า java.awt.*; นำเข้า Java.awt.event.mousevent; นำเข้า java.awt.event.mouselistener; ภาพในแบบฟอร์ม วิธีใช้: ดับเบิลคลิกที่ว่างในรูปแบบเพื่อเปิดกล่องโต้ตอบรูปภาพ หลังจากเปิดรูปภาพคุณสามารถลากและวางรูปภาพลงในแบบฟอร์ม * / @suppresswarnings ("อนุกรม") คลาสสาธารณะ DragingFrame ขยาย JFrame { /*** constructor** @throws HeadlessException? - - */ public dragingframe () พ่น headlessexception {this.setDefaultCloseoperation (exit_on_close); getContentPane (). setLayout (ใหม่ BorderLayout ()); getContentPane (). เพิ่ม (ใหม่ imagePanel (), borderlayout.center); } // โปรแกรมรายการโมฆะสาธารณะคงที่หลัก (สตริง [] args) พ่นข้อยกเว้น {uimanager.setlookandfeel (uimanager.getSystemLookandFeelClassName ()); dragingframe frame = new dragingFrame (); frame.setsize (400, 300); frame.setLocation (300, 300); frame.setResizable (เท็จ); frame.settitle ("www.vevb.com ดับเบิลคลิกเพื่อเปิดรูปภาพแล้วลากและวาง"); frame.setVisible (จริง); }}/*** แผงที่สามารถลากและวางรูปภาพ*/@suppresswarnings ("serial") imagepanel ขยาย jPanel {สถานะ dragstatus ส่วนตัว = dragstatus. พร้อม; // ลากสถานะภาพส่วนตัวภาพ; // ภาพที่จะแสดงจุดส่วนตัว imagePosition = จุดใหม่ (0, 0), // ตำแหน่งปัจจุบันของภาพ imageStartPosition = จุดใหม่ (0, 0), // ตำแหน่งของภาพที่จุดเริ่มต้นของการลากแต่ละครั้ง (นั่นคือตำแหน่งหลังจากการลากครั้งสุดท้าย) mousestartposition; // ตำแหน่งของเมาส์ที่จุดเริ่มต้นของการลากแต่ละครั้ง imagepanel () {addmouselistener (mouselistener ใหม่ () {// เปิดภาพเมื่อคลิกสองครั้งที่หนูโมฆะ mouseclicked (MouseEvent E) {ถ้า (e.getClickCount () บันทึกไว้ == dragstatus.dragging) {สถานะ = dragstatus.ready; addmousemotionListener (ใหม่ mousemotionListener () {// java มีเหตุการณ์ลากและหล่นย้ายตำแหน่งภาพในเหตุการณ์นี้โมฆะสาธารณะ mousedragged (MouseEvent e) {ถ้า (สถานะ == dragstatus.dragging) } /*** ย้ายรูปภาพ ในความเป็นจริงการวาดภาพจะทำใน PaintComponent () ซึ่งมันเพิ่งคำนวณตำแหน่งภาพแล้วเรียกวิธีการ * * @param จุดเมาส์ปัจจุบันตำแหน่ง */ โมฆะส่วนตัว MoveImage (จุดจุด) {// ตำแหน่งปัจจุบันของรูปภาพเท่ากับตำแหน่งเริ่มต้นของรูปภาพบวกกับการชดเชยของตำแหน่งเมาส์ ImagePosition.setLocation (imageStartPosition.getx () + (point.getx () - mousestartposition.getx ()), imagestartposition.gety () + (point.gety () - mousestartposition.gety ()); ทาสีใหม่ (); } // เปิดภาพโมฆะส่วนตัว OpenImage () {System.out.println ("เปิดภาพ ... "); ไฟล์ไฟล์ = createFileChooser (). getSelectedFile (); if (file! = null) {image = toolkit.getDefaultToolKit (). getImage (file.getAbsolutePath ()); if (image! = null) {this.repaint (); }}} // สร้างกล่องโต้ตอบเปิดไฟล์ private jfilechooser createFilechooser () {jfilechooser chooser = ใหม่ jfilechooser (); chooser.setDialogTitle ("โปรดเลือกไฟล์ภาพ ... "); chooser.addchoosableFilter (FilenameExtensionFilter ใหม่ ("รูปแบบภาพสามัญ", "jpg", "jpeg", "gif", "png")); chooser.showopendialog (นี่); return chooser; } @Override Void PaintComponent (กราฟิก g) {super.paintComponent (g); if (image! = null) {g.drawimage (image, (int) imageposition.getx (), (int) imagePosition.gety (), นี่); }} enum private enum dragstatus {ready, dragging}}เอฟเฟกต์การทำงาน:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน