Ich habe versucht mal selbst ei kleines Zeichenprogramm zu programmieren. Das kann jetzt noch nichts außer in einer Farbe was malen. Auch wenn man das Fenster minimiert und dann wieder maximiert, ist alles weg!
Doch das soll mich erstmal nicht stören, habe nämlich ein ganz anderes Problem: Wenn ich die Maus zu schnell bewege, dann zeichnet er nicht durchgänige Linien, sondern nur Punkte, weil es für ihn eben halt zu schnell ist! In Programmen wie Paint, ist das nicht der Fall, ist zwar auch in einer schnelleren Programmiersprache geschrieben, doch meine Frage ist nun, ob sowas auch in Java möglich ist.
Hier mal mein Programmcode:
Doch das soll mich erstmal nicht stören, habe nämlich ein ganz anderes Problem: Wenn ich die Maus zu schnell bewege, dann zeichnet er nicht durchgänige Linien, sondern nur Punkte, weil es für ihn eben halt zu schnell ist! In Programmen wie Paint, ist das nicht der Fall, ist zwar auch in einer schnelleren Programmiersprache geschrieben, doch meine Frage ist nun, ob sowas auch in Java möglich ist.
Hier mal mein Programmcode:
Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Arc2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test03 extends JPanel {
static int x, y;
static boolean zeichne = false;
static test03 gpanel = new test03();;
protected void paintComponent(Graphics g) {
int breite = gpanel.getWidth();
int hoch = gpanel.getHeight();
Shape wrechteck = new Rectangle2D.Double(0, 0, breite, hoch);
Shape pinsel = new Arc2D.Double(x - 5, y - 5, 10, 10, 0, 360, Arc2D.PIE);
if (zeichne == false) {
g.setColor(Color.WHITE);
((Graphics2D) g).fill(wrechteck);
} else {
zeichne = false;
g.setColor(Color.BLACK);
((Graphics2D) g).fill(pinsel);
}
}
public static void main(String args[]) {
JFrame f = new JFrame("Malprogramm");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
Container con = f.getContentPane();
con.setLayout(new GridLayout(0, 1, 0, 0));
con.add(gpanel);
f.setVisible(true);
gpanel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0) {
zeichne = true;
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
});
gpanel.addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent arg0) {
zeichne = true;
x = arg0.getX();
y = arg0.getY();
gpanel.repaint();
}
public void mouseMoved(MouseEvent arg0) {
}
});
}
}