Java: mouseDragged und sich bewegen in einer grafischen Benutzeroberfläche

Neuling Programmierer hier.

Ich bin ein Programm zu machen, das macht Benutzer-eingegebenen Gleichungen in einem kartesischen Koordinatensystem. Im moment bin ich habe einige Probleme damit, die user bewegen die Ansicht frei im Koordinatensystem. Derzeit mit mouseDragged die Benutzer können ziehen Sie die Ansicht ein wenig herum, aber sobald der Benutzer die Maustaste loslässt und versucht, Sie zu bewegen die Ansicht wieder der Ursprung reißt zurück zu der aktuellen position des Mauszeigers. Was ist der beste Weg, damit die Benutzer sich frei zu bewegen? Vielen Dank im Voraus!

Hier ist der code für den Zeichenbereich.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.JPanel;
public class DrawingArea extends JPanel implements MouseMotionListener {

private final int x_panel = 350; //width of the panel
private final int y_panel = 400; //height of the panel
private int div_x; //width of one square
private int div_y; //height of one square

private int real_y;
private int real_x;
private Point origin; //the origin of the coordinate
private Point temp; //temporary point

private static int y = 0;
private static int x = 0;

DrawingArea() {
    setBackground(Color.WHITE);

    real_x = x_panel;
    real_y = y_panel;

    setDivisionDefault();
    setOrigin(new Point((real_x / 2), (real_y / 2)));

    setSize(x_panel, y_panel);
    addMouseMotionListener(this);

}

DrawingArea(Point origin, Point destination) {
     this.origin = origin;
     this.destination = destination;
     panel = new JPanel();
     panel.setSize(destination.x, destination.y);
     panel.setLocation(origin);
     this.panel.setBackground(Color.red);
     panel.setLayout(null);


}

@Override
public void paintComponent(Graphics g) {

    super.paintComponent(g);

    Graphics2D line = (Graphics2D) g;


    temp = new Point(origin.x, origin.y);

    line.setColor(Color.red);
    drawHelpLines(line);

    line.setColor(Color.blue);
    drawOrigin(line);

    line.setColor(Color.green);
    for (int i = 0; i < 100; i++) { //This is a test line
        //temp = this.suora();

        temp.x++;
        temp.y++;

        line.drawLine(temp.x, temp.y, temp.x, temp.y);

    }



}

public void setOrigin(Point p) {
    origin = p;


}



public void drawOrigin(Graphics2D line) {
    line.drawLine(origin.x, 0, origin.x, y_panel);
    line.drawLine(0, origin.y, x_panel, origin.y);
}

public void drawHelpLines(Graphics2D line) {

    int xhelp= origin.x;
    int yhelp= origin.y;
    for (int i = 0; i < 20; i++) {
        xhelp+= div_x;
        line.drawLine(xhelp, 0, xhelp, y_panel);
    }
    xhelp= origin.x;
    for (int i = 0; i < 20; i++) {
        xhelp-= div_x;

        line.drawLine(xhelp, 0, xhelp, y_panel);
    }

    for (int i = 0; i < 20; i++) {
        yhelp-= div_y;
        line.drawLine(0, yhelp,x_panel, yhelp);
    }
    yhelp= origin.y;
    for (int i = 0; i < 20; i++) {
        yhelp+= div_y;
        line.drawLine(0, yhelp, x_panel, yhelp);
    }

}

public void setDivisionDefault() {
    div_x = 20;
    div_y = 20;

}

@Override
public void mouseDragged(MouseEvent e) {


    //Point temp_point = new Point(mouse_x,mouse_y);
    Point coords = new Point(e.getX(), e.getY());



    setOrigin(coords);

    repaint();

}

@Override
public void mouseMoved(MouseEvent e) {
}
}
Sie müssen in der Nähe Ihr Kommentar irgendwo..
Sorry, das war ein Fehler meinerseits. Dies ist eine gekürzte version des eigentlichen code, und ich übersetzen musste einige Variablen und Kommentare in englischer Sprache.
Sie müssen auch post vollständige code ist: es gibt eine Reihe von nicht deklarierten Variablen. poste bitte ein SSCCE
Okay, sollte hoffentlich jetzt OK.
sollten Sie sich entspannen, seine Frage hat mir sehr geholfen

InformationsquelleAutor Matti | 2013-03-22

Schreibe einen Kommentar