Hej jag har en lätt fråga: Du kan skaffa dig muspilens x och y koordinater genom att använda dig av den mouseevent som du får vid eventen mouseMoved. Jo, jag har lite fler frågor: För att kunna flytta på linjen så måste den ju ritas om varje gång. Detta gör du enklast via din paintmetod.Dra en linje till annat ställe
Jag har ritat en linje och undrar nu hur man ska veta om man för musen över linjen eler inte. Tex
public void mouseMoved(MouseEvent e) {
if ( e.getComponent() == linjen){
}
}
Det ska nämligen gå att dra linjen till ett annat ställe.
/DSv: Dra en linje till annat ställe
<code>
int iX = oMouseEvent.getX();
int iY = oMouseEvent.getY();
</code>
Sedan beror det på vilken typ av linje som det är du ritat. Har du använt <code>Graphics.drawLine(int x1, int y1, int x2, int y2)</code> måste du ha sparat linjens koordinater någonstans och jämföra dem med de som du erhåller ur din mouseevent. Har du ritat en linje av typen <code>java.awt.geom.Line2D</code> kan du använda dess <code>contains(double x, double y)</code> metod.
Ok? Fler frågor så hör av dig.
/KlasSv: Dra en linje till annat ställe
Jag får markören att ändra sig när jag för muspekaren över linjen genom att spara x-värdet. Men jag vill att linjen skall flytta på sig, just nu ritas den upp många ggr.
Så här ser koden ut:
import java.awt.*;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.util.Vector;
import javax.swing.*;
//some code
private int x_1 = 1;
private int startLineDrag = 0;
//some code
this.addMouseMotionListener(this);
g2d.drawLine(x_1, this.getHeight()-1, x_1, 0);
public void mouseMoved(MouseEvent e) {
if(!e.isMetaDown() && e.getX()==x_1){
this.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
startLineDrag=1;
}else{
this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
public void mouseDragged(MouseEvent e) {
if (e.isMetaDown() && e.getX() > x_drag_start+5){
//då man drar med höger musknapp ritas en vertikal bar upp
}else {
if (startLineDrag==1){
x_1=e.getX();
Graphics2D g2d = (Graphics2D)this.getGraphics();
g2d.setColor(Color.blue);
g2d.drawLine(x_1, this.getHeight()-1, x_1, 0);
}
}
}
/* protected void processMouseEvent(MouseEvent ev) {
if (!ev.isMetaDown()){
switch(ev.getID()) {
case MouseEvent.MOUSE_RELEASED:
startLineDrag=0;
break;
}
}
} */ //Denna kod processMouseEvent kunde jag inte ha för då stred den
mot en annan kod
Hur ska jag göra?Sv: Dra en linje till annat ställe
/Klas