Hallo zusammen,
ich habe mir eine Funktion gebaut um ein Rectangle in der Größe zu verändern. Es klappt super für SOUTH, EAST und SOUTH_EAST. Für die anderen Punkte wird irgendwie doppelt so viel vergrößert bzw. proportional. Ich sitze hier und finde das Problem nicht :-(
Kann mir vielleicht jemand helfen? Habe ein Video gemacht und es vielleicht schneller zu verstehen was ich meine.
Hier das Video: RapidShare: 1-CLICK Web hosting - Easy Filehosting 338 kb
Hier der Mouse event Code:
Meiner Meingung muss der Fehler irgndwie im
liegen.
Vielen Dank für eure Hilfe im voraus.
ich habe mir eine Funktion gebaut um ein Rectangle in der Größe zu verändern. Es klappt super für SOUTH, EAST und SOUTH_EAST. Für die anderen Punkte wird irgendwie doppelt so viel vergrößert bzw. proportional. Ich sitze hier und finde das Problem nicht :-(
Kann mir vielleicht jemand helfen? Habe ein Video gemacht und es vielleicht schneller zu verstehen was ich meine.
Hier das Video: RapidShare: 1-CLICK Web hosting - Easy Filehosting 338 kb
Hier der Mouse event Code:
Java:
@Override
public void mousePressed(MouseEvent e) {
System.out.println("Curspr: " + cursor);
if(ToolBar.SELECTOR.equals(ToolBar.selectedItem) && selectedTextBox.getCursor(e) == 13) {
for(Components inddItem: drawObjects) {
if(selectedTextBox != null) {
selectedTextBox.setSelected(false);
selectorMode = false;
}
if(inddItem.contains(e.getPoint())) {
selectedTextBox = (TextBox) inddItem;
selectedTextBox.setSelected(true);
selectorMode = true;
break;
}
repaint();
}
} else if(ToolBar.TEXTBOX.equals(ToolBar.selectedItem)) {
TextBox newTextBox = new TextBox(e.getX(),e.getY(),0,0);
newTextBox.setSelected(true);
selectedTextBox = newTextBox;
texboxCreateMode = true;
drawObjects.add(newTextBox);
repaint();
}
if(selectedTextBox != null) {
diffX = selectedTextBox.x - e.getX();
diffY = selectedTextBox.y - e.getY();
cursor = selectedTextBox.getCursor(e);
startPos = e.getPoint();
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(selectedTextBox != null && texboxCreateMode) {
selectedTextBox.setSize((int)(e.getX() - selectedTextBox.getX()), (int)(e.getY() - selectedTextBox.getY()));
selectedTextBox.setSelected(false);
selectedTextBox.setColor(Color.BLACK);
texboxCreateMode = false;
}
startPos = null;
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
if(selectedTextBox != null && texboxCreateMode) {
selectedTextBox.setSize((int)(e.getX() - selectedTextBox.getX()), (int)(e.getY() - selectedTextBox.getY()));
repaint();
}
else if (startPos != null && selectorMode) {
int x = selectedTextBox.x;
int y = selectedTextBox.y;
int w = selectedTextBox.width;
int h = selectedTextBox.height;
int dx = e.getX() - startPos.x;
int dy = e.getY() - startPos.y;
switch (cursor) {
case Cursor.N_RESIZE_CURSOR:
if (!(h - dy < 50)) {
selectedTextBox.setBounds(x, y + dy, w, h - dy);
repaint();
}
break;
case Cursor.S_RESIZE_CURSOR:
if (!(h + dy < 50)) {
selectedTextBox.setBounds(x, y, w, h + dy);
startPos = e.getPoint();
repaint(); }
break;
case Cursor.W_RESIZE_CURSOR:
if (!(w - dx < 50)) {
selectedTextBox.setBounds(x + dx, y, w - dx, h);
repaint(); }
break;
case Cursor.E_RESIZE_CURSOR:
if (!(w + dx < 50)) {
selectedTextBox.setBounds(x, y, w + dx, h);
startPos = e.getPoint();
repaint(); }
break;
case Cursor.NW_RESIZE_CURSOR:
if (!(w - dx < 50) && !(h - dy < 50)) {
selectedTextBox.setBounds(x + dx, y + dy, w - dx, h - dy);
repaint(); }
break;
case Cursor.NE_RESIZE_CURSOR:
if (!(w + dx < 50) && !(h - dy < 50)) {
selectedTextBox.setBounds(x, y + dy, w + dx, h - dy);
startPos = new Point(e.getX(), startPos.y);
repaint(); }
break;
case Cursor.SW_RESIZE_CURSOR:
if (!(w - dx < 50) && !(h + dy < 50)) {
selectedTextBox.setBounds(x + dx, y, w - dx, h + dy);
startPos = new Point(startPos.x, e.getY());
repaint(); }
break;
case Cursor.SE_RESIZE_CURSOR:
if (!(w + dx < 50) && !(h + dy < 50)) {
selectedTextBox.setBounds(x, y, w + dx, h + dy);
startPos = e.getPoint();
repaint(); }
break;
case Cursor.MOVE_CURSOR:
selectedTextBox.setLocation(e.getX() + diffX,e.getY() + diffY);
repaint();
}
setCursor(Cursor.getPredefinedCursor(cursor));
}
}
@Override
public void mouseMoved(MouseEvent e) {
if(selectedTextBox != null && selectedTextBox.isSelected()) {
setCursor(Cursor.getPredefinedCursor(selectedTextBox.getCursor(e)));
}
}
Meiner Meingung muss der Fehler irgndwie im
Java:
int dx = e.getX() - startPos.x;
int dy = e.getY() - startPos.y;
liegen.
Vielen Dank für eure Hilfe im voraus.