Darstellungsfehler des Zeichnens im Malprogramm

Status
Nicht offen für weitere Antworten.
F

Fenixx

Gast
Hallo zusammen,

ich möchte sehr gerne ein kleines Malprogramm schreiben. Dabei sollte die Anwendung wie folgt aufgebaut sein:
- Kopf: Eine kleine Toolbar für die Auswahl verschiedener Funktionen
- Mitte / Rest: Malfläche

Hierbei habe ich zwei Panels verwendet, um den Bereich dafür aufzuteilen. Zu Beginn wird die Toolbar und die Malfläche korrekt angezeigt. Wenn der Benutzer nun jedoch auf der Malfläche malt, verschwindet die Toolbar, indem die Malfläche die Toolbar überlappt.

Problem: Wie kann ich es bewerkstelligen, dass die Malfläche in dem Malpanel angezeigt wird und die Toolbar folglich nicht überlappt wird?

Mein Code:

Code:
import javax.swing.*; 

import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.*; 
import java.awt.image.*; 

public class PaintProgramm extends JApplet implements MouseMotionListener 
{ 
  BufferedImage bi;
  Graphics2D big2;
  int x, y;
  boolean zurueck = true; 

  //Toolbar
  JPanel toolbar = new JPanel();
  //Malfläche
  JPanel malflaeche = new JPanel();
  public void init() 
  { 
    toolbar.setBackground(Color.BLUE);
    Container contentPane = getContentPane();
    JToolBar tb = new JToolBar();
    
    JButton cutButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\ausschneiden.gif"));
    JButton copyButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\kopieren.jpg"));
    JButton saveButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\speichern.jpg"));
    JButton deleteButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\löschen.jpg"));
    JButton clipboardButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\in_die_zwischenablage"));
    
    tb.add(cutButton);
    tb.add(copyButton);
    tb.add(saveButton);
    tb.add(deleteButton);
    tb.add(clipboardButton);
    toolbar.add(tb, BorderLayout.NORTH);
    
    contentPane.add(toolbar, BorderLayout.NORTH);
    malflaeche.setBackground(new java.awt.Color(210, 255, 255));
    malflaeche.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseMoved(java.awt.event.MouseEvent evt) {
          
        }
    });

    malflaeche.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
        public void mouseDragged(java.awt.event.MouseEvent evt) {
 
        }
    });

    getContentPane().add(malflaeche, BorderLayout.SOUTH);
    bi = (BufferedImage)createImage(1250, 1074); 
    big2 = bi.createGraphics(); 
    addMouseMotionListener(this); 
  } 

  public void paint(Graphics g) 
  { 
    Graphics2D g2 = (Graphics2D)g;
    g2.drawImage(bi, null, 0, 0); 
  } 

  public void mouseDragged(MouseEvent ev)
  {
    if (zurueck) 
    { 
      zurueck = false; 
      x = ev.getX() - 1; 
      y = ev.getY(); 
    }
    //Zeichen
    big2.draw(new Line2D.Double(x, y, ev.getX(), ev.getY())); 
    x = ev.getX(); 
    y = ev.getY();
    //Neu zeichnen
    repaint(); 
    
  }

  public void mouseMoved(MouseEvent ev)
  {
    zurueck = true;
    
  } 
}

Für ein Codebeispiel wäre ich extrem dankbar.
Im Voraus vielen Dank.
 

Wildcard

Top Contributor
Warum zeichnet das Applet und nicht die 'malfläche'?
Von JPanel erben und paintComponent überschreiben, dort könnt ihr zeichnen.
 
F

Fenixx

Gast
Vielen Dank für deinen Tipp. Ich habe dies berücksichtigt und eine neue Panel-Klasse geschrieben.
Der Code sieht folgendermaßen aus: PaintProgramm
Code:
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class PaintProgramm extends JApplet 
{ 
  private static final long serialVersionUID = -6834243705857940194L;
  //Toolbar
  JPanel toolbar = new JPanel();
  //Malfläche
  FreihandZeichnen malflaeche = new FreihandZeichnen();
  public void init() 
  { 
    JToolBar tb = new JToolBar();
    
    JButton cutButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\ausschneiden.gif"));
    JButton copyButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\kopieren.jpg"));
    JButton saveButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\speichern.jpg"));
    JButton deleteButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\löschen.jpg"));
    JButton clipboardButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\in_die_zwischenablage"));
    
    tb.add(cutButton);
    tb.add(copyButton);
    tb.add(saveButton);
    tb.add(deleteButton);
    tb.add(clipboardButton);
    toolbar.add(tb, BorderLayout.NORTH);
    malflaeche.paintComponent(getGraphics());
    
    getContentPane().add(toolbar, BorderLayout.NORTH);

    getContentPane().add(malflaeche, BorderLayout.CENTER);
  } 
}
FreizeichnenPanel:
Code:
import java.awt.Graphics; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseMotionListener; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class FreihandZeichnen extends JPanel implements MouseListener, MouseMotionListener { 

    private JPanel panel; 
     
    private int startX, startY, tempX, tempY; 
     
    public FreihandZeichnen(){ 
        this.addMouseListener(this); 
        this.addMouseMotionListener(this); 
    } 
     
    public void paintComponent(Graphics g){ 
        super.paintComponents(g); 
        g.setPaintMode(); 
        g.drawLine(startX, startY, tempX, tempY); 
    } 
     
    public static void main(String[] args) { 
        JFrame frame = new JFrame(); 
        frame.add(new FreihandZeichnen()); 
        frame.setSize(400, 300); 
        frame.setTitle("Freihandzeichnen"); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setVisible(true); 
    } 

    public void mouseClicked(MouseEvent e) { 
    } 
    public void mouseEntered(MouseEvent e) { 
    } 
    public void mouseExited(MouseEvent e) { 
    } 
    public void mousePressed(MouseEvent e) { 
        startX = e.getX(); 
        startY = e.getY(); 
        tempX = e.getX(); 
        tempY = e.getY(); 
    } 
    public void mouseReleased(MouseEvent e) { 
    } 
    public void mouseDragged(MouseEvent e) { 
        startX = tempX; 
        startY = tempY; 
        tempX = e.getX(); 
        tempY = e.getY(); 
        repaint(); 
    } 
    public void mouseMoved(MouseEvent e) { 
    } 
}
Die Toolbar bleibt nun beim Zeichnen bestehen. Allerdings erscheint die selbe Toolbar beim Zeichnen unter der eigentlichen Toolbar nochmal.
Meine Vermutung wäre, dass durch das repaint() in dem FreiZeichnenPanel die Toolbar ein zweites Mal erzeugt wird. Ich habe es auch schon ohne repaint() versucht, allerdings ist das Zeichnen dann nicht möglich.

Hat jemand vielleicht eine Idee, woran es letztendlich liegt, oder ist das repaint() sogar fehlerhaft?
 

Wildcard

Top Contributor
Code:
malflaeche.paintComponent(getGraphics());
Sehr böse! Niemals getGraphics aufrufen!
 
G

Guest

Gast
Ok ich habe die Zeile auch (leider zu spät) direkt nach dem Codepost gelöscht.
Auch habe ich aus dem FreizeichnenPanel folgenden Code entfernt:
Code:
        super.paintComponents(g); 
         g.setPaintMode();

Leider bleibt das Problem weiterhin bestehen.
Vielen Dank nochmal für die Unterstützung.
 
F

Fenixx

Gast
Ich starte aus der IDE (Eclipse). Gibt es denn diesbezüglich Fehler? Bisher hatte ich noch keinen Fehler deswegen gehabt.
 

Wildcard

Top Contributor
Nein, aber beim Browser cacht Java die alten Klassen was beim Entwickeln oft zu 'unerklärlichen' Fehler führt.
Spontan fällt mir der Fehler nicht auf, aber heute Abend kann ich den Code kompilieren und testen.
 
F

Fenixx

Gast
Das wäre sehr nett von dir. Ich habe bereits einen anderen Entwickler gefragt, der aber auch "nur" deine bereits genannte Fehlerlösung angesprochen hat.
Falls ich vor dem Abend auf die Lösung schon bereits gekommen bin, poste ich diese natürlich direkt.

Vielen Dank schonmal.
 
G

Guest

Gast
Um den Fehler einzugrenzen:
Der Fehler erscheint immer nur wenn
Code:
public void mouseDragged(MouseEvent e)
angesprochen wurde. Wenn der Benutzer die Maus zwar drückt, aber nicht "zieht" erfolgt demnach kein Fehler.
 

Wildcard

Top Contributor
works for me
Code:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class PaintProgramm extends JApplet
{
  private static final long serialVersionUID = -6834243705857940194L;
  //Toolbar
  JPanel toolbar = new JPanel();
  //Malfläche
  FreihandZeichnen malflaeche = new FreihandZeichnen();
  public void init()
  {
    JToolBar tb = new JToolBar();
   
    JButton cutButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\ausschneiden.gif"));
    JButton copyButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\kopieren.jpg"));
    JButton saveButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\speichern.jpg"));
    JButton deleteButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\löschen.jpg"));
    JButton clipboardButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\in_die_zwischenablage"));
   
    tb.add(cutButton);
    tb.add(copyButton);
    tb.add(saveButton);
    tb.add(deleteButton);
    tb.add(clipboardButton);
    toolbar.add(tb, BorderLayout.NORTH);
    malflaeche.paintComponent(getGraphics());
   
    getContentPane().add(toolbar, BorderLayout.NORTH);

    getContentPane().add(malflaeche, BorderLayout.CENTER);
  }
} 
class FreihandZeichnen extends JPanel implements MouseListener, MouseMotionListener {

    private JPanel panel;
     
    private int startX, startY, tempX, tempY;
     
    public FreihandZeichnen(){
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
    }
     
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawLine(startX, startY, tempX, tempY);
    }
     
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.add(new FreihandZeichnen());
        frame.setSize(400, 300);
        frame.setTitle("Freihandzeichnen");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public void mouseClicked(MouseEvent e) {
    }
    public void mouseEntered(MouseEvent e) {
    }
    public void mouseExited(MouseEvent e) {
    }
    public void mousePressed(MouseEvent e) {
        startX = e.getX();
        startY = e.getY();
        tempX = e.getX();
        tempY = e.getY();
    }
    public void mouseReleased(MouseEvent e) {
    }
    public void mouseDragged(MouseEvent e) {
//        startX = tempX;
//        startY = tempY;
        tempX = e.getX();
        tempY = e.getY();
        repaint();
    }
    public void mouseMoved(MouseEvent e) {
    }
}
 
F

Fenixx

Gast
Vielen Dank für die Lösung. Ich werde sie direkt morgen auf der Arbeit ausprobieren.
Vielen Dank nochmal. Du hast mich echt weitergebracht.
 
F

Fenixx

Gast
Zwar bleibt die Toolbar nun bestehen, jedoch kann der Benutzer nur noch gerade Linien zeichen, die beim "loslassen" der Maus wieder verschwinden. Ist dir dies auch aufgefallen?
 
G

Guest

Gast
Ich würde auf ein repaint()-Fehler tippen, weil anscheinend beim "drag" das komplette wieder neugezeichnet wird.
 
G

Guest

Gast
Ich habe einfach nochmal neu angefangen. Das Programm ist jetzt fehlerfrei:

Code:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class TestMalprogramm extends JFrame {
  private JPanel jPanel1;
  private Zeichenpanel MalPanel;
  
  int letztes_x;
  int letztes_y;
  
  Graphics g;   
    public TestMalprogramm() {
        initComponents();
    }
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        JToolBar tb = new JToolBar();
        
        JButton cutButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\ausschneiden.gif"));
        JButton copyButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\kopieren.jpg"));
        JButton saveButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\speichern.jpg"));
        JButton deleteButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\löschen.jpg"));
        JButton clipboardButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\in_die_zwischenablage"));
        
        tb.add(cutButton);
        tb.add(copyButton);
        tb.add(saveButton);
        tb.add(deleteButton);
        tb.add(clipboardButton);
        jPanel1.add(tb, BorderLayout.NORTH);
        MalPanel = new Zeichenpanel();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });
        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
        MalPanel.setBackground(new java.awt.Color(255, 255, 255));
        getContentPane().add(MalPanel, java.awt.BorderLayout.CENTER);
        pack();
    }
    
    public static void main(String args[])
    {
        new TestMalprogramm().show();
    }
}
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Zeichenpanel extends JPanel implements MouseListener, MouseMotionListener
{
  int letztes_x;
  int letztes_y;
  
  Graphics g;
  
  public Zeichenpanel ()
  {
    this.addMouseListener(this); 
    this.addMouseMotionListener(this);
  }
  public void paintComponent(Graphics g) 
  { 
    super.paintComponent(g);
  } 
  public static void main(String[] args) {
    JFrame frame = new JFrame(); 
    frame.add(new Zeichenpanel()); 
    frame.setVisible(true); 
  }
  

  public void mouseMoved(MouseEvent e)
  {

  }
  public void mouseClicked(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseEntered(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseExited(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseReleased(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mousePressed(MouseEvent e)
  {
    // damit man zeichnen kann, braucht man die Zeichenfläche,
    // die man mit getContentPane().getGraphics() erhält
   letztes_x=e.getX();
   letztes_y=e.getY();
  }
  public void mouseDragged(MouseEvent e)
  {
    g=getGraphics();
    g.drawLine(letztes_x, letztes_y, e.getX(), e.getY()); 
    letztes_x=e.getX();
    letztes_y=e.getY(); 
    
  }
}
 

Wildcard

Top Contributor
Nein, dein Programm ist jetzt Müll.
Niemals getGraphics aufrufen!
Zwei Möglichkeiten stehen zur Auswahl:
1. Du 'merkst' dir alle Striche in einer Liste und zeichnest alle in paintComponent
2. Du zeichnest in ein Image.
 
G

Guest

Gast
Blöde Frage, aber wieso sollte man kein getGraphics() aufrufen? In deiner Lösung hast du es selber verwendet:
malflaeche.paintComponent(getGraphics());

Ich glaube ich werde es in ein Image zeichnen, da es später noch abgespeichert werden soll.
 
F

Fenixx

Gast
Fast geschafft :D . Ich frage mich nur, wie ich nur das repaint() des Malpanels ausführen kann und nicht eben der ganzen Anwendung.
Meine Vorstellung war es in dem Malprogramm ein addMouseListener für das Panel hinzufügen und dort Malpanel.repaint() auszuführen.
Allerdings kann ich mich mit dem Gedanken nicht ganz anfreunden, da die MouseListener ja in der Malpanel-Klasse bereits implementiert sind.
Ich darf nur das repaint() des Malpanels, weil mir sonst wieder der Fehler mit den zwei Toolbars erscheint.
Der derzeitige Code: TestMalprogramm
Code:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class TestMalprogramm extends JFrame {
  private JPanel jPanel1;
  private Zeichenpanel malPanel;
  
  int letztes_x;
  int letztes_y;
  
  Graphics g;   
    public TestMalprogramm() {
        initComponents();
    }
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        JToolBar tb = new JToolBar();
        
        JButton cutButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\ausschneiden.gif"));
        JButton copyButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\kopieren.jpg"));
        JButton saveButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\speichern.jpg"));
        JButton deleteButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\löschen.jpg"));
        JButton clipboardButton = new JButton(new ImageIcon("D:\\Workspaces\\GUI\\Icons\\in_die_zwischenablage"));
        
        tb.add(cutButton);
        tb.add(copyButton);
        tb.add(saveButton);
        tb.add(deleteButton);
        tb.add(clipboardButton);
        jPanel1.add(tb, BorderLayout.NORTH);
        malPanel = new Zeichenpanel();
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });
        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
        malPanel.setBackground(new java.awt.Color(255, 255, 255));
        getContentPane().add(malPanel, java.awt.BorderLayout.CENTER);
        pack();
    }
    
    public static void main(String args[])
    {
        new TestMalprogramm().show();
    }
}
Das Malpanel:
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Zeichenpanel extends JPanel implements MouseListener, MouseMotionListener
{
  int letztes_x;
  int letztes_y;
  
  BufferedImage bi; 
  Graphics2D big2;
  
  Graphics g;
  
  public Zeichenpanel ()
  {
    bi = new BufferedImage( 1250, 1074, BufferedImage.TYPE_INT_ARGB );
    big2 = bi.createGraphics();
    big2.setColor(Color.BLACK);
    this.addMouseListener(this); 
    this.addMouseMotionListener(this);
  }
  public void paintComponent(Graphics g) 
  { 
    super.paintComponent(g);
  } 
  public void paint(Graphics g) 
  { 
    Graphics2D g2 = (Graphics2D)g; 
    g2.drawImage(bi, null, 0, 0); 
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame(); 
    frame.add(new Zeichenpanel()); 
    frame.setVisible(true); 
  }
  

  public void mouseMoved(MouseEvent e)
  {

  }
  public void mouseClicked(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseEntered(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseExited(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseReleased(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mousePressed(MouseEvent e)
  {
   letztes_x=e.getX();
   letztes_y=e.getY();
  }
  public void mouseDragged(MouseEvent e)
  {
    //Es soll schon während des "Drags" gezeichnet werden 
    big2.draw(new Line2D.Double(letztes_x, letztes_y, e.getX(), e.getY())); 
    letztes_x=e.getX();
    letztes_y=e.getY();
    repaint();
  }
}

Dein Tutorial lässt sich übrigens auch als Anfänger leicht verstehen.
 
F

Fenixx

Gast
Der Inhalt der Methode paint() könnte ebenfalls in paintComponent() stehen. Dies macht kein Unterschied aus.
 

Wildcard

Top Contributor
Nein, ein repaint muss immer gefahrlos ablaufen, sonst ist was kaputt.
Was ich bedenklich finde ist, das du 2 main Methoden hast und 2 verschiedene Frames benutzt.
Das ist sehr Fehlerträchtig.
 
F

Fenixx

Gast
Die main-Methode hab ich extra nur zum Testen eingebaut. Ich hab die nun entfernt und siehe da: Es funktioniert :D

Der Code des Panels:
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;


public class Zeichenpanel extends JPanel implements MouseListener, MouseMotionListener
{
  int letztes_x;
  int letztes_y;
  
  BufferedImage bi; 
  Graphics2D big2;
  
  Graphics g;
  
  public Zeichenpanel ()
  {
    bi = new BufferedImage( 1250, 1074, BufferedImage.TYPE_INT_ARGB );
    big2 = bi.createGraphics();
    big2.setColor(Color.BLACK);
    this.addMouseListener(this); 
    this.addMouseMotionListener(this);
  }
  public void paintComponent(Graphics g) 
  { 
    super.paintComponent(g); 
    Graphics2D g2 = (Graphics2D)g; 
    g2.drawImage(bi, null, 0, 0); 
  } 
  public void mouseMoved(MouseEvent e)
  {

  }
  public void mouseClicked(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseEntered(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseExited(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mouseReleased(MouseEvent e)
  {
    // TODO Automatisch erstellter Methoden-Stub
    
  }
  public void mousePressed(MouseEvent e)
  {
   letztes_x=e.getX();
   letztes_y=e.getY();
  }
  public void mouseDragged(MouseEvent e)
  {
    //Es soll schon während des "Drags" gezeichnet werden 
    big2.draw(new Line2D.Double(letztes_x, letztes_y, e.getX(), e.getY())); 
    letztes_x=e.getX();
    letztes_y=e.getY();
    repaint();
  }
}

Falls du mal nach Dortmund kommst, gib ich dir nen Bier aus. Du weißt gar nicht wie erleichtert ich bin :wink: .
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben