MouseMotionListener spinnt(e.getX()/e.getY())

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,
ich wollte es mir mal am Anfang nich soo schwer machen( das ist mein erstes JApplet/Applet ).
Ich kenn mich mit Applets nicht so aus, ich weiß nur, dass man Graphics g benutzt------>besser JApplet.

Das Problem: seht selbst:
Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class firstJApplet extends JApplet implements MouseMotionListener{

  JLabel schriftZug = new JLabel("Hallo Welt"); 
  
  public void init(){

     this.setSize(300, 300);
     this.setLayout(null);
     schriftZug.setBounds(50,50,"Hallo Welt".length()*10,15);
     this.add(schriftZug);
     this.setVisible(true);
     schriftZug.addMouseMotionListener(this);
  }

@Override
public void mouseDragged(MouseEvent e) {
	schriftZug.setBounds(e.getX()+10,e.getY()+10,"Hallo Welt".length()*10, 15);
	
}

@Override
public void mouseMoved(MouseEvent e) {
	schriftZug.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
	
}


}
Das JLabel fliegt wie irre rum?????
 

0x7F800000

Top Contributor
du wolltest den schriftzug wohl irgendwie bewegen... und zwar bzgl des applets. da musst du natürlich den mouseMotionListener ans applet hängen, und nicht an den schriftzug, sonst werden dir ja die mauskoordinaten in lokalen koordinaten des schriftzugs geliefert, da dürfte ziemlicher blödsinn rauskommen. Und zig milliarden mal cursor neusetzen muss auch nicht sein, einmal reicht auch schon.
 

Wildcard

Top Contributor
Code:
public class firstJApplet extends JApplet implements MouseMotionListener {

	JLabel schriftZug = new JLabel("Hallo Welt");

	public void init() {

		this.setSize(300, 300);
		this.setLayout(null);
		schriftZug.setBounds(50, 50, "Hallo Welt".length() * 10, 15);
		this.add(schriftZug);
		this.setVisible(true);
		schriftZug.addMouseMotionListener(this);
	}

	@Override
	public void mouseDragged(MouseEvent e) {
		Point p = SwingUtilities.convertPoint(schriftZug, e.getPoint(),
				schriftZug.getParent());
		schriftZug.setBounds(p.x, p.y, "Hallo Welt".length() * 10, 15);

	}

	@Override
	public void mouseMoved(MouseEvent e) {
		schriftZug.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

	}

}
 

André Uhres

Top Contributor
Wenn wir in "mousePressed" den Ausgangspunkt festhalten,
dann können wir in "mouseDragged" die Location relativ zum Ausgangspunkt anpassen:
Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class FirstJApplet extends JApplet implements MouseMotionListener {
    private JLabel schriftZug = new JLabel("Hallo Welt");
    private Point p1;
    @Override
    public void init() {
        this.setSize(300, 300);
        this.setLayout(null);
        schriftZug.setBounds(50, 50, "Hallo Welt".length() * 10, 15);
        schriftZug.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
        this.add(schriftZug);
        this.setVisible(true);
        schriftZug.addMouseMotionListener(this);
        schriftZug.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(final MouseEvent e) {
                p1 = e.getPoint();
            }
        });
    }
    @Override
    public void mouseDragged(final MouseEvent e) {
        Point p2 = e.getPoint();
        Point loc = schriftZug.getLocation();
        loc.translate(p2.x - p1.x, p2.y - p1.y);
        schriftZug.setLocation(loc);
    }
    @Override
    public void mouseMoved(final MouseEvent e) {
    }
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben