Hi,
ich bin gerade am Java lernen bzw. versuchen zu lernen :D. Ich habe bis jetzt ein kleines Progamm hinbekommen, mit den mann etwas ganz einfaches zeichnen kann. Das gezeichnete kann man bis jetzt noch nicht löschen, daher wollte ich mal fragen, was ich bei dem Code ergänzen muss, dass wenn man auf den Löschen button klickt
paint(g);
ausgeführt wird.
Der Code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class malen extends JFrame {
CMeinCanvas m_malfläche;
ButtonGroup m_formauswahl;
JButton löschen;
int m_Xpos;
int m_Ypos;
public static void main(String[] args) {
malen fenster = new malen("Mal mit mir :D");
fenster.pack();
fenster.setSize(500,400);
fenster.setResizable(false);
fenster.setVisible(true);
}
malen(String titel) {
super(titel);
setLayout(new FlowLayout());
m_malfläche = new CMeinCanvas();
add(m_malfläche);
löschen = new JButton("Löschen");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5,1,20,20));
m_formauswahl = new ButtonGroup();
JRadioButton opt1 = new JRadioButton("Kreis",false);
JRadioButton opt2 = new JRadioButton("Scheibe",false);
JRadioButton opt3 = new JRadioButton("Rechteck",false);
JRadioButton opt4 = new JRadioButton ("Freihand",false);
opt1.setActionCommand("Kreis");
opt2.setActionCommand("Scheibe");
opt3.setActionCommand("Rechteck");
opt4.setActionCommand("Freihand");
m_formauswahl.add(opt1);
m_formauswahl.add(opt2);
m_formauswahl.add(opt3);
m_formauswahl.add(opt4);
panel.add(opt1);
panel.add(opt2);
panel.add(opt3);
panel.add(opt4);
panel.add(löschen);
add(panel);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class CMeinCanvas extends Canvas {
class CMeinMausMotionAdapter extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
ButtonModel aktuell;
String label;
aktuell = m_formauswahl.getSelection();
if(aktuell == null)
return;
label = aktuell.getActionCommand();
if(label.equals("Freihand")) {
Graphics tmp = m_malfläche.getGraphics();
m_Xpos = e.getX();
m_Ypos = e.getY();
tmp.drawOval(m_Xpos,m_Ypos,2,2);
}
}
}
class CMeinMausAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
m_Xpos = e.getX();
m_Ypos = e.getY();
repaint();
}
}
CMeinCanvas() {
addMouseListener(new CMeinMausAdapter());
addMouseMotionListener(new CMeinMausMotionAdapter());
setBackground(Color.black);
setForeground(Color.green);
}
public void update(Graphics g) {
String label;
ButtonModel aktuell = null;
aktuell = m_formauswahl.getSelection();
if(aktuell == null)
return;
int w = (int) (Math.random()*300);
int h = (int) (Math.random()*300);
label = aktuell.getActionCommand();
if(label.equals("Kreis"))
g.drawOval(m_Xpos,m_Ypos,w,w);
if(label.equals("Scheibe"))
g.fillOval(m_Xpos,m_Ypos,w,h);
if(label.equals("Rechteck"))
g.drawRect(m_Xpos,m_Ypos,w,h);
}
public Dimension getMinimumSize() {
return new Dimension(300,300);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
}
Im Anhang ist das Programm…