Hallo Leute
Wenn man auf den button klickt wird ein 4-eck gezeichnet.
Wenn man auf das 4-eck dragged wird immer eine linie gezeichnet und gelöscht so das die linie
immer geupdated wird.
Jetzt zum Problem.
Ich habe es schon ungefähr hinbekommen, ABER wenn man dragged sieht man die linie nicht so oft
und nach ein paar sekunden wird die linie gar nich mehr angezeigt.
Ein weiteres problem ist, das wenn man dragged und die maus nicht bewegt wird nichts gezeichnet wird
hie ist auch der code
ok danke schon im vorraus
Wenn man auf den button klickt wird ein 4-eck gezeichnet.
Wenn man auf das 4-eck dragged wird immer eine linie gezeichnet und gelöscht so das die linie
immer geupdated wird.
Jetzt zum Problem.
Ich habe es schon ungefähr hinbekommen, ABER wenn man dragged sieht man die linie nicht so oft
und nach ein paar sekunden wird die linie gar nich mehr angezeigt.
Ein weiteres problem ist, das wenn man dragged und die maus nicht bewegt wird nichts gezeichnet wird
hie ist auch der code
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class wurf2 {
private JFrame frame = new JFrame("Wurf");
private JPanel panel = new JPanel();
private JButton btStart = new JButton("Start");
private int x;
private int y;
private int rectx;
private int recty;
private int rectsize = 50;
public void makeFrame() {
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(2, 1));
frame.add(btStart);
frame.add(panel);
frame.setVisible(true);
}
public void onStart() {
btStart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Graphics g = panel.getGraphics();
int breite = panel.getWidth();
int hohe = panel.getHeight();
rectx = (breite / 2) - 25;
recty = (hohe / 2) - 25;
g.drawRect(rectx, recty, rectsize, rectsize);
}
});
}
public void doWork() {
panel.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
Graphics g = panel.getGraphics();
boolean b = false;
x = e.getX();
y = e.getY();
if (((x >= rectx) && (x <= (rectx + rectsize)) && (y >= recty) && (y <= (recty + rectsize))) || (b == false)) {
draw(g);
clear(g);
b = true;
}
}
@Override
public void mouseMoved(MouseEvent e) {
}
});
}
private void draw(Graphics g) {
g.drawRect(rectx, recty, rectsize, rectsize);
g.setColor(Color.BLACK);
g.drawLine(x, y, rectx + (rectsize / 2), recty + (rectsize / 2));
}
private void clear(Graphics g) {
Color c = panel.getBackground();
g.setColor(c);
g.drawLine(x, y, rectx + (rectsize / 2), recty + (rectsize / 2));
}
public static void main(String[] args) {
wurf2 w = new wurf2();
w.makeFrame();
w.onStart();
w.doWork();
}
}
ok danke schon im vorraus