Hallo,
Ich schreibe gerade eine Art Paint...
Sehr weit bin ich noch nicht, aber zeichnen und eine Farbe auswählen kann man schon.
Allerdings wird das gezeichnete an der Stelle wo der JColorChooser zur farbauswahl aufgerufen wird gelöscht.
Dafür muss man denke ich irgendwie die Graphics auf das Panel schreiben...
Hier die Klassen:
Ich schreibe gerade eine Art Paint...
Sehr weit bin ich noch nicht, aber zeichnen und eine Farbe auswählen kann man schon.
Allerdings wird das gezeichnete an der Stelle wo der JColorChooser zur farbauswahl aufgerufen wird gelöscht.
Dafür muss man denke ich irgendwie die Graphics auf das Panel schreiben...
Hier die Klassen:
Java:
public class Hauptfenster extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
JPanel panel;
Graphics g;
private boolean zeichnen = false;
private Integer letzterXWert = null;
private Integer letzterYWert = null;
private Color colorStrich = Color.BLACK;
private JButton farbauswahlStrich;
public Hauptfenster() {
super("Fast Paint");
panel = new JPanel();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1280, 1024);
baueFenster();
add(panel);
setVisible(true);
g = panel.getGraphics();
}
public void baueFenster() {
panel.addMouseListener(new Mauslistener(this));
MausBewegungsListener bewegungslistener = new MausBewegungsListener(this);
panel.addMouseMotionListener(bewegungslistener);
farbauswahlStrich = new JButton("Neue Farbe");
panel.add(farbauswahlStrich);
farbauswahlStrich.addActionListener(e -> {
colorChooser();
});
}
public void zeichne(int x, int y) {
g.setColor(colorStrich);
if (letzterXWert != null && letzterYWert != null) {
g.drawLine(letzterXWert, letzterYWert, x, y);
} else {
g.drawLine(x, y, x, y);
}
letzterXWert = x;
letzterYWert = y;
}
public boolean getZeichnen() {
return zeichnen;
}
public void setZeichnen(boolean b) {
zeichnen = b;
}
public void setLetzterXWert(Integer letzterXWert) {
this.letzterXWert = letzterXWert;
}
public void setLetzterYWert(Integer letzterYWert) {
this.letzterYWert = letzterYWert;
}
public static void main(String[] args) {
new Hauptfenster();
}
public void colorChooser() {
colorStrich = JColorChooser.showDialog(null,
"Farbauswahl", null);
}
}
Java:
public class MausBewegungsListener implements MouseMotionListener {
private Hauptfenster hauptfenster;
public MausBewegungsListener(Hauptfenster hauptfenster) {
this.hauptfenster = hauptfenster;
}
@Override
public void mouseDragged(MouseEvent e) {
if (hauptfenster.getZeichnen()) {
hauptfenster.zeichne(e.getX(), e.getY());
}
}
@Override
public void mouseMoved(MouseEvent e) {
// Keine Ahnung warum aber die Methode brauchen wir nicht...
}
}
Java:
public class Mauslistener implements MouseListener {
private Hauptfenster hauptfenster;
public Mauslistener(Hauptfenster hauptfenster) {
this.hauptfenster = hauptfenster;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
hauptfenster.setZeichnen(true);
}
@Override
public void mouseReleased(MouseEvent e) {
hauptfenster.setZeichnen(false);
hauptfenster.setLetzterXWert(null);
hauptfenster.setLetzterYWert(null);
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}