Mouselistener

Status
Niet open voor verdere reacties.

Guus81

Gebruiker
Lid geworden
9 mrt 2005
Berichten
21
Goedemorgen allen,

Ik heb de volgende vraag. Ik wil dat mijn programma reageert op de linker en rechtermuisknop maar dat deze niet een knop hoeft aan te wijzen. in weze is de muisaanwijzer dus niet aanwezig maar moet het programma reageren op de knoppen.
Weet iemand hoe ik dit kan programmeren?

Code:
public void init()
{		
       Listener l = new Listener();
}
	
public class Listener implements java.awt.event.MouseListener
{  
 	public void mouseEntered(java.awt.event.MouseEvent e) {}
         // Invoked when the mouse enters a component.
 	public void mouseExited(java.awt.event.MouseEvent e) {}
         // Invoked when the mouse exits a component.
 	public void mousePressed(java.awt.event.MouseEvent e) {
                 // 		 TODO reactie op muisklik
 			
 	}
        //  Invoked when a mouse button has been pressed on a component.
 	public void mouseReleased(java.awt.event.MouseEvent e) {}
 	// 	Invoked when the mouse button has been clicked (pressed and released) on a component.
 	public void mouseClicked(java.awt.event.MouseEvent e) {}
 
Dit is de code waar het daadwerkelijk om gaat. Misschien dat dat helpt...

Code:
package userinterface;

import java.awt.Font;
import java.awt.event.MouseEvent;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.event.MouseInputListener;

public class NaamInvoer extends JPanel implements MouseInputListener {	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1234567890L;
	private JLabel letter1, letter2, letter3;
	private String[] lijst;
	private String naam;
		
	public NaamInvoer() {
		lijst = new String[] {
				"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
				"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
				".", "_", " ", "OK"
		};
		setLayout(null);
		Font f = new Font("Dialog", Font.PLAIN, 32);
		
		letter1 = new JLabel("A");
		letter1.setBounds(50, 25, 50, 50);
		letter1.setHorizontalAlignment(SwingConstants.CENTER);
		letter1.setFont(f);
		this.add(letter1);
		
		letter2 = new JLabel("A");
		letter2.setBounds(150, 25, 50, 50);
		letter2.setHorizontalAlignment(SwingConstants.CENTER);
		letter2.setFont(f);
		this.add(letter2);
		
		letter3 = new JLabel("A");
		letter3.setBounds(250, 25, 50, 50);
		letter3.setHorizontalAlignment(SwingConstants.CENTER);
		letter3.setFont(f);
		this.add(letter3);
	}
	
	public void setNaam(String naam) {
		this.naam = naam;
	}
	
	public String getNaam() {
		return naam;
	}
	
	public void mouseClicked(MouseEvent arg0) {}
	public void mouseEntered(MouseEvent arg0) {}
	public void mouseExited(MouseEvent arg0) {}
	public void mousePressed(MouseEvent e) {
		StringBuffer buffer = new StringBuffer();
		int letterActief = 1;
		int i = 0;
		if(e.getButton()==MouseEvent.BUTTON1) {
			if(letterActief==1) {
				letter1.setText(lijst[i]);
				if(i==29)
					i = 0;
				else
					i++;
			}
			if(letterActief==2) {
				letter2.setText(lijst[i]);
				if(i==29)
					i = 0;
				else
					i++;
			}
			if(letterActief==3) {
				letter3.setText(lijst[i]);
				if(i==30)
					i = 0;
				else
					i++;
			}
		}
		if(e.getButton()==MouseEvent.BUTTON2) {
			if(letterActief >= 3  || letter3.getText()=="OK") {
				buffer.append(letter1.getText());
				buffer.append(letter2.getText());
				if(letter3.getText()!="OK")
					buffer.append(letter3.getText());
				setNaam(buffer.toString());
			}
			else {
				letterActief++;
				i = 0;
			}
		}
	}
	public void mouseReleased(MouseEvent arg0) {}
	public void mouseDragged(MouseEvent arg0) {}
	public void mouseMoved(MouseEvent arg0) {}

}
 
Je kunt een mouseListener aan allerlei componenten koppelen, ook aan een JPanel.
Je kunt dit doen in de constructor van je klasse NaamInvoer:

...
letter3.setFont(f);
this.add(letter3);
addMouseListener(this);
 
Voor de volledigheid mss even vermelden: Als je bvb enkel een muisklik moet tracen, en al de andere acties niet, is het voordeliger om je klasse als extend van MouseInputAdapter te maken en niet als implentatie van MouseListener. zo hoef je enkel de methode die jij nodig hebt te overwriten.

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan