Hallo zusammen!
Das u.a. Programm zeichnet einen Faden, dessen Ende der der Maus folgt und dessen Anfangspunkt bei jedem Klicken neu gesetzt wird. (RMT bricht ab)
Mir fällt auf, dass bei etwas zügigerem Klicken dieses Neusetzen einfach unterbleibt, undzwar auf verschiedenen Rechnern!! Das ist im Gebrauch recht lästig. Ein Performance-Problem kann das bei diesem Winz-Programm ja wohl nicht sein.
So ein träges Klick-Verhalten kenne ich von anderen Programmen nicht. Weiss jemand den Grund? Stimmt was an der Event-Methode nicht?
Grüße,
bronkowitz
Das u.a. Programm zeichnet einen Faden, dessen Ende der der Maus folgt und dessen Anfangspunkt bei jedem Klicken neu gesetzt wird. (RMT bricht ab)
Mir fällt auf, dass bei etwas zügigerem Klicken dieses Neusetzen einfach unterbleibt, undzwar auf verschiedenen Rechnern!! Das ist im Gebrauch recht lästig. Ein Performance-Problem kann das bei diesem Winz-Programm ja wohl nicht sein.
So ein träges Klick-Verhalten kenne ich von anderen Programmen nicht. Weiss jemand den Grund? Stimmt was an der Event-Methode nicht?
Grüße,
bronkowitz
Java:
package testprojekt;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class Main {
public static void main(String[] args) {
Hauptfenster fenster = new Hauptfenster();
fenster.pack();
fenster.setExtendedState(Frame.MAXIMIZED_BOTH);
fenster.setVisible(true);
}
}
class Hauptfenster extends JFrame {
private Zeichenflaeche zeichenflaeche;
public Hauptfenster(){
super();
setTitle("testprojekt");
zeichenflaeche = new Zeichenflaeche();
add(zeichenflaeche);
zeichenflaeche.setBackground(Color.WHITE);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
class Zeichenflaeche extends JPanel {
private Line2D.Double faden;
public Zeichenflaeche(){
super();
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
faden = new Line2D.Double();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.draw(faden);
}
private class MouseHandler extends MouseAdapter{
public void mouseClicked(MouseEvent event){
if (event.getButton() == 3)
{
System.exit(0);
}
faden.setLine(event.getX(), event.getY(),
event.getX(), event.getY());
repaint();
}
}
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent event){
faden.setLine(faden.getX1(), faden.getY1(),
event.getX(), event.getY());
repaint();
}
public void mouseDragged(MouseEvent event){
}
}
}