Hinzufügen eines MouseListener oder MouseMotionListener, um mein JLabel in einem Jpanel in meinem Steine-wie-board

Ich bin wirklich nicht sicher, was zu tun ist. Ich hatte angefangen, indem Sie eine neue Klasse, die beide MouseMotionListener und MouseListener, und das nimmt in seinem Konstruktor das JLabel:

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JLabel;

public class motion implements MouseMotionListener, MouseListener {

    motion(JLabel im) {
        label1 = im;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        if (e.getSource() == label1) {
            drag = true;
        } 
    } 

    @Override
    public void mouseReleased(MouseEvent e) {
        drag = false;
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        if (drag == true) {
            mouseX = e.getX();
            mouseY = e.getY();
            label1.setBounds(mouseX, mouseY, 
                    label1.getWidth(), label1.getHeight());
        }
    }

    public void mouseMoved(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {}  
    private JLabel label1;
    private int mouseX;
    private int mouseY;
    private boolean drag = false;

}

Dies ist der code für mein board. Derzeit die Stücke sind nicht in der Lage, sich zu bewegen. Ich hatte eine Zeile in jede if-Anweisung zum hinzufügen eines MouseMotionListener--picLabel.addMouseMotionListener(new motion(picLabel))--aber das hat nicht funktioniert.

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

   public class Checkerboard {
       public static void main (String args[]) throws IOException {
         JFrame checkerBoard = new JFrame();
         checkerBoard.setSize(700,700);
         checkerBoard.setTitle("Lines of Action");
         checkerBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         int row = 8;
         int col = 8;
         Container pane = checkerBoard.getContentPane();
         pane.setLayout(new GridLayout(row,col));
         Color checker;   
         for (int x = 1; x <= (row * col); x++) {
            int altr = 0;
            altr = (x-1) % col;
            altr += (x-1) / col;

            if (altr % 2 == 0) {
               checker = Color.darkGray;
            } else {
               checker = Color.lightGray;
            }

            JPanel panel = new JPanel();
            panel.setPreferredSize(new Dimension(400/row, 400/col));
            panel.setBackground(checker);
            if ((x < 8 && x > 1) || (x < 64 && x > 57)) {
                BufferedImage myPicture = 
            ImageIO.read(new  File("C:\\Users\\srjames90\\Downloads\\BlackPiece.png"));
                JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
                picLabel.addMouseMotionListener(new motion(picLabel));
                panel.add(picLabel);
            } else if(check(x)) {
                BufferedImage myPicture = 
            ImageIO.read(new File("C:\\Users\\srjames90\\Downloads\\WhitePiece.png"));
                JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
                panel.add(picLabel);
            }
            pane.add(panel);
         }
         checkerBoard.setVisible(true);
      }

      static boolean check(int y) {
           return y == 9 || y == 16 || y == 17 || y == 24 || y == 25
                   || y == 32 || y == 33 || y == 40 || y == 41 || y == 48
                       || y == 49 || y == 56;
       }
   }
InformationsquelleAutor King James | 2012-12-02
Schreibe einen Kommentar