# Mouselistener



## 20:00 (30. Okt 2007)

Kleines Problem und zwar bei mouseClicked... Ich möchte das Bild des Button ändern, wenn ich auf den Button "Maus klicke" mit doppelklick oder rechte maus klicke. Aber da tut sich nichts^^
Code vielleicht in eine andere Adapterklasse von Mouselistener???

hoffe ihr könnts mir helfen

Danke


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class MouseListenerTest extends JFrame implements ActionListener, MouseListener  {
    static final long serialVersionUID = 0L;

    private static final String CLEAR = "clear";
    private static final String nl = System.getProperty("line.separator");
    private JTextArea textArea = new JTextArea("", 6, 1);
    private JButton mouseButton = new JButton("Maus");
    private JButton displayButton =new JButton("");
    ClassLoader cl = getClass().getClassLoader();

    public MouseListenerTest() {
        setTitle("MouseListener");
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setFrameLocation(500, 300);
    	
    	JPanel bereich1 = new JPanel();
    	bereich1.add(displayButton);
    	
   	 	JPanel bereich2 = new JPanel();
   	 	bereich2.setLayout(new BorderLayout());
   	 	bereich2.add(new JScrollPane(textArea), BorderLayout.SOUTH);

   	 	JButton clearButton = new JButton("Alles löschen");
        
   	 	JPanel bereich3 = new JPanel();
   	 	bereich3.add(mouseButton);
   	 	bereich3.add(clearButton);

   	 	Container windowFlaeche = getContentPane();
   	 	windowFlaeche.add(bereich1, BorderLayout.NORTH);
   	 	windowFlaeche.add(bereich2, BorderLayout.CENTER);
   	 	windowFlaeche.add(bereich3, BorderLayout.SOUTH);

   	 	textArea.setEditable(false);
   	 	mouseButton.addMouseListener(this);
        
        clearButton.addActionListener(this);
        clearButton.setActionCommand(CLEAR);
        
     	setVisible(true);
    }

    public void setFrameLocation(int frameWidth, int frameHeight) {
    	setSize(frameWidth, frameHeight);
    	Dimension screen = getToolkit().getScreenSize();
    	setLocation((screen.width - frameWidth)/2, (screen.height - frameHeight)/2);
    }
 
    // Methoden für den MouseListener **********************************
    public void mouseEntered(MouseEvent e) {
        mouseButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
    }
    public void mouseExited(MouseEvent e) {
        mouseButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    }

    public void mouseClicked(MouseEvent e) {
        String text = "Mausklick - Koordinaten: x=" + e.getX() + " y=" + e.getY();
        updateTextarea(text);
        
        // In diesem Beispiel sind nur ein Doppelklick mit der linken Maustaste
        // oder ein einfacher Klick mit der rechten Maustaste zugelassen
        
        if (e.getButton() == MouseEvent.BUTTON1){
        	if(e.getClickCount() == 2){
        		text = "===> zugelassen: linke Maustaste, Doppelklick";
        		displayButton = new JButton(new ImageIcon(cl.getResource("tiger.gif")));
            	displayButton.setMargin(new Insets(0, 0, 0, 0));
        	}
        	else 
        		return;
        }
        
        else if (e.getButton() == MouseEvent.BUTTON3) {
            if(e.getClickCount() == 1){
                text = "===> zugelassen: rechte Maustaste, Einfachklick";
                displayButton = new JButton(new ImageIcon(cl.getResource("elephant.gif")));
            	displayButton.setMargin(new Insets(0, 0, 0, 0));
            }
            else
                return;
        }
        else
            return;

        updateTextarea(text);
    }
    public void mousePressed(MouseEvent e) {
        String text = "Mouse pressed";
        if(e.getButton() == MouseEvent.BUTTON1)
            text += " - left mouse key";
        else if (e.getButton() == MouseEvent.BUTTON2)
            text += " - mouse wheel";
        else if (e.getButton() == MouseEvent.BUTTON3)
            text += " - right mouse key";
        updateTextarea(text);
    }
    public void mouseReleased(MouseEvent e) {
        updateTextarea("Mouse released");
    }
    // ********************************************************************
    
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals(CLEAR))
            textArea.setText("");
    }

    private void updateTextarea(String s) {
        textArea.append(s + nl);
    }

    public static void main(String[] args) {
    	new MouseListenerTest();
    }
}
```


----------



## Marco13 (30. Okt 2007)

Beim Klicken erstellst du ja einen 
displayButtton = new JButton(...)
Das ist ein neuer, eigenständiger Button. Den Button, der im "bereich1" liegt, interessiert nicht, dass ein neuer Button angelegt wird (auch wenn er der gleichen Variablen zugewisen wird)

Du könntest den displayButton aus dem "bereich1" entfernen und einen neuen reinlegen (macht aber keinen Sinn), oder (besser: ) KEINEN neuen Button erstellen, sondern einfach das machen, was du machen willst: Dem displayButton ein neues Icon zuweisen
displayButton.setIcon(new ImageIcon(cl.getResource("tiger.gif")));


----------



## 20:22 (1. Nov 2007)

Danke für deine Antwort,
das Bild ändert sich jetzt bei doppelklicks (e.getClickaccount()==2) und rechte maustasten klicks.

Wenn sich das Bild für einen einfach klick mit der linken maustaste ändern soll, sollte ich doch so (e.getClickaccount()==1); natürlich geht das nicht so leicht 

lg


----------

