Artikel ini menjelaskan fungsi panel yang dapat dipilih dan diseret dan dijatuhkan gambar yang diimplementasikan oleh Java. Bagikan untuk referensi Anda, sebagai berikut:
Saya melihat posting di forum hari ini dan berharap untuk menyeret dan menjatuhkan gambar seperti menyeret peta dalam ayunan. Berikut adalah implementasi paling sederhana, memberikan ide dasar.
Impor javax.swing.*; impor javax.swing.filechooser.filenameextensionfilter; impor java.awt.*; impor java.awt.event.mouseEvent; impor java.awt.event.mouseRerer; impor java.awt.event.mousemeremeneneren oxenerer; formulir. Cara menggunakan: Klik dua kali ruang kosong dalam formulir untuk membuka kotak dialog gambar. Setelah membuka gambar, Anda dapat menyeret dan menjatuhkan gambar pada formulir. * / @SuppressWarnings ("Serial") DragingFrame kelas publik memperluas jframe { /*** konstruktor** @throws headlessException? ? ? */ dragingframe publik () melempar headlessException {this.setDefaultCloseOperation (exit_on_close); getContentPane (). setLayout (borderlayout baru ()); getContentPane (). Add (new ImagePanel (), borderlayout.center); } // Entri program public static void main (string [] args) melempar Exception {uimanager.setLookandFeel (uimanager.getsystemLookandFeelClassName ()); Dragingframe frame = dragingframe baru (); frame.setsize (400, 300); frame.setlocation (300, 300); frame.setresizable (false); frame.settitle ("www.vevb.com klik dua kali untuk membuka gambar, dan kemudian seret dan drop"); frame.setVisible (true); }}/*** Panel yang dapat menyeret dan menjatuhkan gambar*/@SuppressWarnings ("Serial") Imagepanel memperluas jpanel {private dragstatus status = dragstatus.ready; // seret status gambar gambar pribadi; // gambar yang akan ditampilkan Point ImagePosition = titik baru (0, 0), // Posisi saat ini dari gambar ImageStartPosition = titik baru (0, 0), // Posisi gambar pada awal setiap drag (yaitu, posisi setelah drag terakhir) mousestartposition; // Posisi mouse pada awal setiap drag imagepanel () {addMouseListener (mouseListener baru () {// buka gambar saat mengklik dua kali mouse public void mouseclicked (mouseevent e)} {if (e.getClickCount () == 2) {Openimage (); direkam. == dragstatus.dragging) {status = dragstatus.ready; AddMouseMotionListener (baru mousemotionListener () {// java memiliki acara drag and drop, pindahkan posisi gambar dalam acara ini public void mouseDragged (mouseEvent e) {if (status == dragstatus.dragging) {mouseed (e.getPoint ());}} public void Mousem) {moouse (e.getPoint ());}}} {mouseMage (e.getPoint ());}} {e.getPoint); } /*** Pindahkan gambar. Bahkan, pekerjaan menggambar dilakukan di catcomponent (), di mana ia hanya menghitung posisi gambar dan kemudian memanggil metode tersebut. * * @param point Posisi mouse saat ini */ private void moveImage (titik titik) {// Posisi gambar saat ini sama dengan posisi awal gambar ditambah offset posisi mouse. imageposition.setLocation (imagestArtPosition.getX () + (point.getX () - mouseStartPosition.getX ()), imagestArtPosition.gety () + (point.gety () - mouseStartPosition.gety ())); ulang (); } // buka gambar private void openImage () {System.out.println ("Buka gambar ..."); File file = createFileChooser (). GetSelectedFile (); if (file! = null) {image = toolkit.getDefaultToolKit (). getImage (file.getAbsolutePath ()); if (gambar! = null) {this.repaint (); }}} // Buat kotak dialog file terbuka pribadi jfilechooser createFileChooser () {jFilechooser chooser = new jfilechooser (); chooser.setDialogTitle ("Silakan pilih file gambar ..."); chooser.addchoosableFilter (filenameExtensionfilter baru ("format gambar umum", "jpg", "jpeg", "gif", "png"))); chooser.showopendialog (ini); pemilih kembali; } @Override Protected Void PaintComponent (Graphics G) {super.paintComponent (g); if (gambar! = null) {g.drawimage (gambar, (int) imageposition.getx (), (int) imageposition.gety (), this); }} private enum dragstatus {Ready, seretging}}Efek Menjalankan:
Untuk informasi lebih lanjut tentang algoritma java, pembaca yang tertarik dengan situs ini dapat melihat topik: "struktur data java dan tutorial algoritma", "ringkasan tips node dom java", "ringkasan file operasi java dan direktori" dan "ringkasan tip operasi java cache" tips java "tips java" Tips "Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.