T
toef82
Gast
Hallo ich Muss ein Paint Programm für arme schreiben, die rudimentären funktionen gehen auch schon allerdings klappts mit dem MouseEvent irgendwie nicht im code sage ich ihm das wenn die maustaste gedrückt ist der boolean clicked auf true gesetzt werden soll und dann auch gezeichnet werden soll aber irgendwie haut das alles nicht so hin wie ich will kann mir jemand helfen? wenn ich clicked von anfangan auf true setze gehts seltsamer weise aber verlasse ich das fenster und clicked wird false und ich halte die maustaste im fenster wieder gedrückt tut sich gar nix...ich poste mal mein exemplar
Code:
//Meine Paint.java
import java.awt.*;
import java.awt.event.*;
import java.awt.event.*;
public class Paint extends Frame{
private BorderLayout ly= new BorderLayout();
private Button clear,beenden;
private Choice choice;
private Panel p1,p2;
MyCanvas c;
public boolean clicked;
public class cdf implements MouseMotionListener{
public cdf(){
super();
}
public void mouseMoved(MouseEvent m){
if(clicked==true){
c.setX(m.getX());
c.setY(m.getY());
repaint();
c.paintAll(c.getGraphics());
}c.paintAll(c.getGraphics());
}
public void mouseDragged(MouseEvent m){
}
}
public class MyMouseListener implements MouseListener {
public void mousePressed(MouseEvent m){
clicked=true;
}
public void mouseReleased(MouseEvent m){
clicked=false;
}
public void mouseClicked(MouseEvent m) {
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
clicked=false;
}
}
public class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.print(e.getActionCommand());
if(e.getActionCommand()=="Clear"){
System.out.println("clear");
c.clear();
c.repaint();
}
if(e.getActionCommand()=="Beenden"){
System.out.println("end");
System.exit(0);
}
}
}
public Paint(){
super("Paint");
this.clicked=true;
this.setLayout(ly);
ButtonListener bl=new ButtonListener();
c = new MyCanvas();
c.addMouseListener(new MyMouseListener());
c.addMouseMotionListener(new cdf());
clear=new Button("Clear");
clear.addActionListener(bl);
beenden = new Button ("Beenden");
beenden.addActionListener(bl);
choice = new Choice();
choice.addItem("weiss");
choice.addItem("blau");
choice.addItem("rot");
choice.addItem("grün");
choice.addItem("gelb");
choice.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent m){
}
});
c.setBackground(Color.black);
p1=new Panel();
p2= new Panel();
p1.add(choice);
p2.add(clear);
p2.add(beenden);
this.add("North",p1);
this.add("South",p2);
this.add("Center",c);
}
public static void main(String[] args) {
Paint paint= new Paint();
paint.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
paint.setSize(500,500);
paint.setMaximumSize(new Dimension(510,510));
paint.setVisible(true);
}
}
//Meine MyCanvas.java
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.util.*;
public class MyCanvas extends Canvas {
Vector <Integer> x=new Vector();
Vector<Integer> y=new Vector();
public MyCanvas()
{
super();
}
public void setX(int x){this.x.add(x);}
public void setY(int y){this.y.add(y);}
public void clear(){
this.x.clear();
this.y.clear();
}
// Überschreiben der Methode paint() von Canvas
public void paint(Graphics g)
{
g.setColor(Color.blue);
if(y.size()>=2){
for(int i=1;i<y.size();i++){
g.drawLine(x.elementAt(i-1),y.elementAt(i-1),x.elementAt(i),y.elementAt(i));
}
}
}
}