Este artículo describe las funciones del panel que se pueden seleccionar, arrastrar y eliminar imágenes implementadas por Java. Compártelo para su referencia, como sigue:
Hoy vi una publicación en el foro y espero arrastrar y soltar imágenes como arrastrar mapas en Swing. Aquí está la implementación más simple, que proporciona una idea básica.
import javax.swing.*; import javax.swing.filechooser.filenameExEextensionFilter; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MousElstener; import java.awt.event.mousemotionListener; import java.io.file; la forma. Cómo usar: haga doble clic en el espacio en blanco en el formulario para abrir el cuadro de diálogo Imagen. Después de abrir la imagen, puede arrastrar y soltar la imagen en el formulario. * / @SupressWarnings ("serial") clase pública Dragingframe extiende jframe { /*** constructor** @throws HeadlessException? ? ? */ public DragingFrame () lanza HeadlessException {this.setDefaultCloseOperation (EXIT_ON_CLOSE); getContentPane (). SetLayout (new BorderLayout ()); getContentPane (). add (new ImagePanel (), borderLayout.center); } // Entrada de programa public static void main (String [] args) lanza la excepción {uiManager.setlookandFeel (uiManager.getSystemlookandFeelClassName ()); DragingFrame Frame = new DragingFrame (); Frame.setsize (400, 300); Frame.SetLocation (300, 300); Frame.setResizable (falso); Frame.settitle ("www.vevb.com Haga doble clic para abrir la imagen, y luego arrastre y suelte"); Frame.setVisible (verdadero); }}/*** Panel que puede arrastrar y soltar la imagen*/@supressWarnings ("serial") La clase ImagePanel extiende jpanel {status privado dragStatus = dragStatus.ready; // arrastre la imagen de imagen privada de estado; // Imagen a mostrar Punto privado ImagePosition = nuevo punto (0, 0), // La posición actual de la imagen ImageStartPosition = New Point (0, 0), // la posición de la imagen al comienzo de cada arrastre (es decir, la posición después del último arrastre) MouseStartPosition; // The position of the mouse at the start of each drag ImagePanel() { addMouseListener(new MouseListener() { // Open the image when double-clicking the mouse public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { openImage(); } } // When the mouse is pressed, the status is changed and the drag start position is registrado. == dragStatus.dragging) {status = dragStatus.ready;}} public void MouseEndered (MouseEvent E) {} public void MouseExited (MouseEvent E) {}}); AddMouseMotionListener (New MouseMotionListener () {// java tiene un evento de arrastrar y soltar, mover la posición de la imagen en este evento public void mousedragged (mouseEvent e) {if (status == dragStatus.dragging) {MoveiMage (e.getPointPoint ());}} public Coid MouseMed (MOUSEEVEVEN EVENGVEN)}); } /*** Mueve la imagen. De hecho, el trabajo de dibujo se realiza en PaintComponent (), donde simplemente calcula la posición de la imagen y luego llama al método. * * @param Point Posición actual del mouse */ private void mudeImage (punto de punto) {// La posición actual de la imagen es igual a la posición inicial de la imagen más el desplazamiento de la posición del mouse. ImagePosition.SetLocation (imageStArtPosition.getx () + (Point.getx () - MouseStartPosition.getx ()), ImageStArtPosition.gety () + (Point.gety () - MouseStartPosition.gety ())); repintado (); } // Abra la imagen privada void openImage () {System.out.println ("IMAGEN DE APERTURA ..."); Archivo archivo = createFileCooser (). GetSelectedFile (); if (file! = null) {image = toolkit.getDefaultToolkit (). getImage (file.getabsolutePath ()); if (image! = null) {this.rePaint (); }}} // Crear un cuadro de diálogo de archivo abierto privado jfilechooser createFilechooser () {jfilechooser chooser = new jfilechooser (); chooser.setDialogTitle ("Seleccione el archivo de imagen ..."); chooser.addchoosableFilter (nuevo FileNAMEExEXTensionFilter ("Formato de imagen común", "jpg", "jpeg", "gif", "png")); Chooser.showopendialog (this); return Chooser; } @Override protegido void PaintComponent (Graphics g) {super.PaintComponent (g); if (image! = null) {g.drawimage (image, (int) imagePosition.getx (), (int) imagePosition.gety (), this); }} private enum dragstatus {listo, arrastrando}}Efecto de ejecución:
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.