Hallo zusammen
Ich möchte ein kleines Zeichenprogramm schreiben.
Nun möchte ich, wenn ich ESC drücke das mein ganzes Zeichenfeld zurückgesetzt wird.
Das Problem ist, bei e.getKeyCode bekomme ich immer 0 zurück. Wieso ?
Mein zweites Problem:
Wie kann ich nur mein Zeichenfeld updaten? Ich möchte nicht das das ganze Panel updaten/ neu zeichnen, sondern nur der Teil der sich verändert hat.
Falls ihr grobe / fahrlässige Fehler, oder einfach unschönen Code seht, bitte sofort Melden.
Sonst kann ich nicht daraus lernen.
Danke im Voraus ;-)
mfg
History
Hier noch das Programm.
Die Zeile addWindowClosingAdapter könnt ihr löschen.
Ich lade die Datei aus dem Grund nicht hoch, da sie nicht von mir stammt.
mfg
History
Ich möchte ein kleines Zeichenprogramm schreiben.
Nun möchte ich, wenn ich ESC drücke das mein ganzes Zeichenfeld zurückgesetzt wird.
Das Problem ist, bei e.getKeyCode bekomme ich immer 0 zurück. Wieso ?
Mein zweites Problem:
Wie kann ich nur mein Zeichenfeld updaten? Ich möchte nicht das das ganze Panel updaten/ neu zeichnen, sondern nur der Teil der sich verändert hat.
Java:
package zeichenprogramm;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
public class Paint extends Frame implements MouseMotionListener, MouseListener,KeyListener{
private static final long serialVersionUID = 1L;
public static void main (String args[]) {
new Paint();
}
private final int W_HEIGHT = 500;
private final int W_WIDTH = 700;
private Color selectedColor = Color.red;
private int strichbreite = 10;
private ArrayList<DrawAttribute> linie = new ArrayList<DrawAttribute>();
public Paint() {
super("Zeichen Programm");
addWindowListener(new WindowClosingAdapter(true));
setSize(W_WIDTH, W_HEIGHT);
addMouseMotionListener(this);
addMouseListener(this);
addKeyListener(this);
setBackground(Color.lightGray);
setVisible(true);
setResizable(false);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillRect(30, 50, 80, 40);
g.setColor(Color.green);
g.fillRect(120, 50, 80, 40);
g.setColor(Color.blue);
g.fillRect(210 , 50, 80, 40);
g.setColor(selectedColor);
g.fillRect(300, 50, 150, 40);
g.setColor(Color.black);
g.drawString("RED", 35, 65);
g.drawString("GREEN", 125, 65);
g.drawString("BLUE", 215, 65);
g.drawString("SELECTED COLOR", 305, 65);
//Zeichenfeld zeichnen und Umrahmen
g.drawRect(30, 100, (W_WIDTH -30 -30), (W_HEIGHT -30 -100));
g.setColor(Color.white);
g.fillRect(31, 101, (W_WIDTH -30 -30 -1), (W_HEIGHT -30 -100 -1));
g.setClip(32,102, (W_WIDTH -30 -30 -2), (W_HEIGHT -30 -100 -1));
for (DrawAttribute d : linie) {
g.setColor(d.getColor());
g.drawLine(d.getX(), d.getY(), d.getX2(), d.getY2());
}
}
//Mouse MotionListener
@Override
public void mouseDragged(MouseEvent e) {
linie.add(new DrawAttribute(e.getX(), e.getY(),e.getX() + strichbreite, e.getY() + strichbreite, selectedColor));
getGraphics().setColor(selectedColor);
getGraphics().drawLine(e.getX(), e.getY(),e.getX() + strichbreite, e.getY() + strichbreite);
repaint();
}
@Override
public void mouseClicked(MouseEvent e) {
Point p = e.getPoint();
// Sehen welcher Button gedrückt wurde
if (p.x > 30 && p.x < 30 + 80 && p.y > 50 && p.y < 90) {
selectedColor = Color.red;
} else if (p.x > 120 && p.x < 120 + 80 && p.y > 50 && p.y < 90) {
selectedColor = Color.green;
} else if (p.x > 210 && p.x < 210 + 80 && p.y > 50 && p.y < 90) {
selectedColor = Color.blue;
}
repaint();
}
@Override
public void keyTyped(KeyEvent e) {
// if (e.getKeyCode() == 0) {
// linie.clear();
// System.out.println(e.getKeyCode());
// }
// strichbreite = e.getKeyChar();
// if (strichbreite > 9) {
// strichbreite = ;
// }
strichbreite = (int )(Math.random() * 10);
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
}
Falls ihr grobe / fahrlässige Fehler, oder einfach unschönen Code seht, bitte sofort Melden.
Sonst kann ich nicht daraus lernen.
Danke im Voraus ;-)
mfg
History
Hier noch das Programm.
Die Zeile addWindowClosingAdapter könnt ihr löschen.
Ich lade die Datei aus dem Grund nicht hoch, da sie nicht von mir stammt.
mfg
History