Hallo liebes Forum,
ich versuche gerade ein Malprogramm zu erstellen und taste mich langsam vor.
Momentan soll an der Stelle, wo auf der Canvas (cv) geklickt wird, ein Punkt gemalt werden (komponente -> cvg)
Dazu habe ich eine eigene Methode gemacht ( zeichnen(cvg) ), die scheinbar aber fehlerhaft ausgeführt, bzw nicht erkannt wird.
Die Koordinaten werden ausgegeben (also bis zur mousePressed methode geht alles) doch die Zeichen Methode scheint nicht gestartet zu werden.
Wo liegt der Fehler? Ich seh ihn nichgt
ich versuche gerade ein Malprogramm zu erstellen und taste mich langsam vor.
Momentan soll an der Stelle, wo auf der Canvas (cv) geklickt wird, ein Punkt gemalt werden (komponente -> cvg)
Dazu habe ich eine eigene Methode gemacht ( zeichnen(cvg) ), die scheinbar aber fehlerhaft ausgeführt, bzw nicht erkannt wird.
Die Koordinaten werden ausgegeben (also bis zur mousePressed methode geht alles) doch die Zeichen Methode scheint nicht gestartet zu werden.
Wo liegt der Fehler? Ich seh ihn nichgt
Java:
//
// Freihand zeichnen
//
import java.awt.*;
import java.awt.event.*;
import java.math.*;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
//Interface
public class Malprogramm
extends Frame
implements MouseListener, Runnable, ActionListener
{
int x;
int y;
Canvas cv;
Graphics cvg;
boolean grün=false , blau=false, rot = false, gelb = false;
Button b_grün, b_blau ,b_rot , b_gelb , b_erase , b_save ;
public static void main(String[]args)
{
Malprogramm wgh =new Malprogramm ();
wgh.setSize(500,500);
wgh.setBackground(Color.gray);
wgh.show();
}
public Malprogramm()
{
super ("Mein Malprogramm");
//Fenster schließbar machen
WindowListener wl = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wl);
// 1. Panel
Panel p1= new Panel();
p1.setBounds(10,45,40,40);
//Grüner Button
b_grün= new Button("grün");
b_grün.setBackground (Color.green);
//Grüner Button
b_gelb= new Button("gelb");
b_gelb.setBackground (Color.yellow);
//Grüner Button
b_blau= new Button("blau");
b_blau.setBackground (Color.blue);
//Grüner Button
b_rot= new Button("rot");
b_rot.setBackground (Color.red);
//erase
b_erase= new Button("erase");
b_erase.setBackground (Color.white);
//save
b_save= new Button("save");
b_save.setBackground (Color.white);
p1.add(b_grün);
p1.add(b_gelb);
p1.add(b_blau);
p1.add(b_rot);
p1.add(b_erase);
p1.add(b_save);
b_grün.addActionListener(this);
b_gelb.addActionListener(this);
b_rot.addActionListener(this);
b_blau.addActionListener(this);
// Panel 2
Panel p2 = new Panel ();
p2.setLayout(null);
// CANVAS
Canvas cv = new Canvas();
cv.setBackground(Color.white);
cv.setBounds(1,1,1000,1000);
cv.addMouseListener(this);
p2.add(cv);
//Hauptfenster Layout
setLayout(new GridLayout(2,1));
add(p1);
add(p2);
}
//ActionPerformed Methode
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b_blau)
{
blau=true;
grün=false;
gelb=false;
rot=false;
}
if(e.getSource()==b_grün)
{
blau=false;
grün=true;
gelb=false;
rot=false;
}
if(e.getSource()==b_gelb)
{
blau=false;
grün=false;
gelb=true;
rot=false;
}
if(e.getSource()==b_rot)
{
blau=false;
grün=false;
gelb=false;
rot=true;
}
}
public void start(){
Thread th = new Thread(this);
th.start();
}
public void run(){
while (true){
try {
Thread.sleep (80);
}
catch (InterruptedException ex){}
}
}
//Tastendruck und Aktion
public void mousePressed(MouseEvent event)
{
x = event.getX();
y = event.getY();
System.out.println(x + " " + y);
zeichnen(cvg);
}
public void mouseReleased(MouseEvent event)
{
}
public void mouseClicked(MouseEvent event)
{
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
// ZeichenMethode
public void zeichnen(Graphics grafik)
{
//Grüne Farbe gewählt
if (grün==true)
{
cvg = cv.getGraphics();
cvg.setColor(Color.green);
cvg.fillOval(x, y, 20, 20);
}
// Rote Farbe gewählt
if (rot==true)
{
cvg = cv.getGraphics();
cvg.setColor(Color.red);
cvg.fillOval(x, y, 20, 20);
}
// blaue Farbe gewählt
if (blau==true)
{
cvg = cv.getGraphics();
cvg.setColor(Color.blue);
cvg.fillOval(x, y, 20, 20);
}
//Gelbe Farbe gewählt
if (gelb==true)
{
cvg = cv.getGraphics();
cvg.setColor(Color.yellow);
cvg.fillOval(x, y, 20, 20);
}
}
}