Ich versuche als Übung eine Art Paint-Programm zu schaffen.
Mein 1. Ziel ist es ein Strich mit der Maus zu malen.
Das Problem ist nur, dass das Viereck nur der Maus folgt. Eig. war es so geplant das bei jeder neuen veränderung der Maus das Viereck sich verändert und das alte bleibt.
Außerdem soll es auf Buttonklick eine "neue" Weiße Fläche erscheinen. Doch diese erscheint nur sehr kurz und wird auch wieder übermalt.
Ich hoffe mal , dass ihr ein paar gute Einfälle habt.
Mein 1. Ziel ist es ein Strich mit der Maus zu malen.
Das Problem ist nur, dass das Viereck nur der Maus folgt. Eig. war es so geplant das bei jeder neuen veränderung der Maus das Viereck sich verändert und das alte bleibt.
Außerdem soll es auf Buttonklick eine "neue" Weiße Fläche erscheinen. Doch diese erscheint nur sehr kurz und wird auch wieder übermalt.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Paint extends JFrame implements MouseMotionListener
{
public int neu = 0;
int linie=0;
private int x,y;
public Paint()
{
super(Paint.class.getName());
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
JButton button = new JButton("Neu");
button.addActionListener(new ActionListener()
{
public void actionPerformed(final ActionEvent e)
{
neu = 1;
}
});
JButton button2 = new JButton("Linie");
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
linie=1;
}
});
Box menuBox = new Box(BoxLayout.X_AXIS);
menuBox.add(button);
menuBox.add(button2);
cp.add(menuBox, BorderLayout.NORTH);
final AnyPanel panel = new AnyPanel();
cp.add(panel, BorderLayout.CENTER);
setSize(600, 480);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
addMouseMotionListener( this );
}
public void mouseMoved( MouseEvent e )
{
x = e.getX();
y = e.getY()-50;
repaint();
e.consume();
}
public void mouseDragged( MouseEvent e ) { }
public static void main(final String[] argv)
{
new Paint();
}
class AnyPanel extends JPanel
{
@Override
public void paint( Graphics g)
{
super.paintComponents(g);
if(neu==1)
{
g.setColor(Color.white);
g.fillRect(1,1,10000,100000);
neu=0;
}
if(linie==1)
{
g.setColor(Color.black);
g.fillRect(x,y,10,10);
linie=1;
}
}
}
}
Ich hoffe mal , dass ihr ein paar gute Einfälle habt.
Zuletzt bearbeitet: