تصف هذه المقالة وظائف اللوحة التي يمكن تحديدها وسحبها وإسقاط الصور التي تنفذها Java. شاركه للرجوع إليه ، على النحو التالي:
رأيت منشورًا في المنتدى اليوم وأتمنى سحب وإسقاط الصور مثل سحب الخرائط في الأرجوحة. فيما يلي أبسط تطبيق ، وتوفير فكرة أساسية.
استيراد javax.swing.*؛ import javax.swing.filechooser.filenameextensionfilter ؛ استيراد java.awt. استمارة. كيفية الاستخدام: انقر نقرًا مزدوجًا فوق المساحة الفارغة في النموذج لفتح مربع الحوار الصورة. بعد فتح الصورة ، يمكنك سحب وإسقاط الصورة على النموذج. * / @cumpresswarnings ("Serial") الطبقة العامة DragingFrame يمتد JFrame { /*** Constructor** throws HeadlessException؟ ؟ ؟ */ public dragingframe () يلقي HeadlessException {this.setDefaultCloseOperation (exit_on_close) ؛ getContentPane (). setLayout (New BorderLayout ()) ؛ getContentPane (). add (new ImagePanel () ، borderlayout.center) ؛ }. إطار DragingFrame = DragingFrame جديد () ؛ Frame.SetSize (400 ، 300) ؛ Frame.SetLocation (300 ، 300) ؛ frame.setResiby (false) ؛ frame.settitle ("www.vevb.com انقر نقرًا مزدوجًا لفتح الصورة ، ثم سحب وإسقاط") ؛ frame.setVisible (صحيح) ؛ }}/*** لوحة يمكنها سحب وإسقاط الصورة*/@crumpresswarnings ("Serial") Class ImagePanel تمتد JPanel {private dragstatus status = dragstatus.ready ؛ // سحب حالة الصورة الخاصة صورة ؛ // الصورة المراد عرضها على Point Point ImagePosition = نقطة جديدة (0 ، 0) ، // الموضع الحالي لـ ImageStArtPosition = نقطة جديدة (0 ، 0) ، // موضع الصورة في بداية كل سحب (أي ، الموضع بعد السحب الأخير) mousestartposition ؛ . مسجلة. == DragStatus.Dragging) {status = dragstatus.ready ؛ AddMouseMotionListener (جديد mousemotionListener () {// Java لديه حدث السحب والإفلات ، حرك موضع الصورة في هذا الحدث الفراغ العام mousedragged (mouseevent e) {if (status == dragstatus.dragging) {moveimage ( } /*** حرك الصورة. في الواقع ، يتم إجراء أعمال الرسم في PaintComponent () ، حيث يحسب فقط موضع الصورة ثم يستدعي الطريقة. * * param point current mouse position */ private void movemage (point point) {// الموضع الحالي للصورة يساوي موضع البداية للصورة بالإضافة إلى إزاحة موضع الماوس. ImagePosition.SetLocation (ImagesTartPosition.getx () + (point.getx () - mousestartposition.getx ()) ، ImagesTartPosition.gety () + (point.gety () - mousestartposition.gety ())) ؛ REPAINT () ؛ } // افتح الصورة private void openImage () {system.out.println ("فتح صورة ...") ؛ ملف الملف = createFileChoOser (). getSelectedFile () ؛ if (file! = null) {image = toolkit.getDefaultToolkit (). getImage (file.getabsolutepath ()) ؛ if (image! = null) {this.repaint () ؛ }}} // إنشاء مربع حوار ملف فتح jfilechooser private createFileChooser () {jfileChooser chooser = new JfileChooser () ؛ chooser.setDialogTitle ("الرجاء تحديد ملف الصورة ...") ؛ chooser.addchoosablefilter (new fileNameExtensionFilter ("تنسيق الصورة المشترك" ، "JPG" ، "JPEG" ، "GIF" ، "PNG")) ؛ chooser.showopendialog (هذا) ؛ إرجاع المختار. } Override paintComponent محمية Override (الرسومات G) {super.paintcomponent (g) ؛ if (image! = null) {g.drawImage (Image ، (int) imagePosition.getx () ، (int) imagePosition.gety () ، this) ؛ }} enum dragstatus {ready ، dragging}}تأثير الجري:
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.