Cet article décrit les fonctions du panneau qui peuvent être sélectionnées et traînées et supprimées des images implémentées par Java. Partagez-le pour votre référence, comme suit:
J'ai vu un article sur le forum aujourd'hui et j'espère faire glisser et laisser tomber des photos comme faire glisser des cartes en swing. Voici la mise en œuvre la plus simple, fournissant une idée de base.
Importer javax.swing. *; Importer javax.swing.filechooser.filenameExtensionFilter; import java.awt. *; import java.awt.event.mouseevent; import java.awt.event.mouseSeListener; import java.awt.event.memotionListener; Importer java.io.file; formulaire. Comment utiliser: Double-cliquez sur l'espace vierge dans le formulaire pour ouvrir la boîte de dialogue Image. Après avoir ouvert l'image, vous pouvez faire glisser et laisser tomber l'image sur le formulaire. * / @ SuppressWarnings ("Serial") La classe publique DragingFrame étend JFrame {/ ** * Constructor * * @throws HeadlessException? ? ? * / public dagingFrame () lève HeadlessException {this.setDefaultCloseOperation (exit_on_close); getContentPane (). setLayout (new BorderLayout ()); getContentPane (). Add (new ImagePanel (), borderLayout.Center); } // Entrée de programme public static void main (String [] args) lève une exception {uimanager.setLookAndFeel (uiManager.getSystemLookAndFeelClassName ()); DagingFrame frame = new DragingFrame (); frame.SetSize (400, 300); frame.setLocation (300, 300); frame.setResiSable (false); frame.settitle ("www.vevb.com double-cliquez pour ouvrir l'image, puis glisser et déposer"); frame.setVisible (true); }} / ** * Panneau qui peut faire glisser et supprimer l'image * / @ suppressWarnings ("Serial") La classe ImagePanel étend JPanel {private dragstatus status = dragstatus.ready; // glisser l'image privée de l'état; // Image à afficher ImagePosition Point privée = nouveau point (0, 0), // la position actuelle de l'image ImageStartPosition = nouveau point (0, 0), // la position de l'image au début de chaque traînée (c'est-à-dire la position après la dernière traînée) MousestartPosition; // La position de la souris au début de chaque glisser ImagePanel () {AddMouseListener (new MouseListener () {// Ouvrez l'image lorsque vous doublez le double de la souris. Enregistré. == dragstatus.dragging) {status = dragstatus.ready;}} public void muouseentered (MouseEvent e) {} public void MouseExit (MouseEvent e) {}}); AddMousMotionListener (new MousMotionListener () {// java a un événement de glisser-déposer, déplacez la position de l'image dans cet événement public void MouseDragged (MouseEvent E) {if (status == dragstatus.dragging) {MoveImage (e.getPoint ());}} public Void Moutemoved (Mousevent e) {}); } / ** * Déplacez l'image. En fait, le travail de dessin se fait dans PaintComponent (), où il calcule simplement la position de l'image, puis appelle la méthode. * * @Param Point Position actuelle de la souris * / private void MoveImage (point de point) {// La position actuelle de l'image est égale à la position de départ de l'image plus le décalage de la position de la souris. ImagePosition.SetLocation (ImageStartPosition.getX () + (Point.getX () - MousstartPosition.getX ()), ImageStartPosition.gety () + (Point.gety () - MouseStartPosition.gety ())); repeindre(); } // Ouvrez l'image private void openImage () {System.out.println ("Image d'ouverture ..."); Fichier file = createFileChoOser (). GetSelectedFile (); if (file! = null) {image = toolkit.getDefaultToolkit (). getImage (file.getAbsolutePath ()); if (image! = null) {this.repaint (); }}} // Créer une boîte de dialogue de fichiers ouverte private jFileChooser CreateFileChoOser () {jFileChoOser Chooser = new JFileChoOser (); choOser.setDialogTitle ("Veuillez sélectionner le fichier image ..."); ChoOser.AddChoosableFilter (nouveau FileNameExtensionFilter ("Format d'image commun", "JPG", "JPEG", "GIF", "png")); ChoOser.ShowoPendialog (this); RETOUR CHOOSER; } @Override Protected void PaintComponent (Graphics G) {super.paintComponent (G); if (image! = null) {g.drawImage (image, (int) imagePosition.getx (), (int) imagePosition.gety (), this); }} private enum dragstatus {prêt, glisser}}Effet de course:
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et didacticiel d'algorithme", "Résumé des conseils de nœud Java Operation Dom", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.