Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
MouseEvent.getX() liefert in Applet Screen-Koordinate
bei einem in meinem Applet enthaltenen JPanel versuche ich per MouseMotionListener
und getX() bzw. getY() die Position innerhalb der Komponente zu ermitteln.
Mein Problem ist, dass die zurückgelieferte Position solange relativ zum Bilderschirm
zurückgeliefert wird, bis ich einmal auf das JPanel klicke. Erst dann kommt die Koordinate
relativ zur Komponente.
Es tritt auf, wenn die Java-Konsole beim Start des Applets eingeblendet wird.
Dann werden auf meinem Mac Screen-Koordinaten zurückgeliefert, bis das
Browserfenster den Fokus erhält. Beim Mac wird das Konsolenfenster über dem
Browserfenster angezeigt und hat den Fokus. Das ist, glaub ich, unter Windows
anders. Zumindest trat das Problem auf einem Windows 7 Rechner soeben auch
mit aktivierter Java-Konsole nicht auf.
Vielen Dank aber dennoch für die schnelle Reaktion.
Wenn auch jetzt nicht mehr nötig - und nur damit niemand denkt, ich wäre zu faul
ein KSKB einzustellen, hier ein schnell zusammengestricktes Stückchen, mit dem
das Ganze (wie gesagt: wohl nur auf dem Mac) getestet werden kann. ;-)
Java:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
public class MouseDemo extends Applet implements MouseMotionListener {
Point mousePos=new Point(0,0);
@Override
public void destroy() {
super.destroy();
}
@Override
public void init() {
super.init();
demoPanel = new JPanel(){
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Pos: " + mousePos.x + " : " + mousePos.y, 20,20);
}
};
demoPanel.setBackground(Color.GRAY);
demoPanel.setPreferredSize(new Dimension(600,600));
this.add(demoPanel);
}
@Override
public void start() {
super.start();
this.setPreferredSize(new Dimension(600,600));
this.validateTree();
demoPanel.addMouseMotionListener(this);
}
@Override
public void stop() {
super.stop();
}
private static final long serialVersionUID = -8371379391036065620L;
JPanel demoPanel = null;
@Override
public void mouseDragged(MouseEvent evt) {
}
@Override
public void mouseMoved(MouseEvent evt) {
this.mousePos = evt.getPoint();
this.repaint();
}
}