Newsgroup: it.comp.java
Titolo: tasto DX mouse

Salve a tutti, una domandina semplice (per voi),
Sto aggiungendo dei listener a una mia interfaccina grafica e voglio 
catturare il click del tasto DX del mouse su una Jtextarea.
Fin qui tutto ok, con questo codice riesco a intercettarlo benissimo.
treq.addMouseListener(new MouseListener(){
             public void mousePressed(MouseEvent e) {
                 //System.out.println();
                 if(e.getButton()==3){
                     aboutDialog.show();
                 }
             }
             public void mouseReleased(MouseEvent e) {
                 //Aggiungere handler se necessari
             }
             public void mouseEntered(MouseEvent e) {
                 //Aggiungere handler se necessari
             }
             public void mouseExited(MouseEvent e) {
                 //Aggiungere handler se necessari
             }
             public void mouseClicked(MouseEvent e) {
                 //Aggiungere handler se necessari
             }
         });
Però se io avessi 3 JTextArea e 2 Campi di testo e volessi intercettare 
il click del tasto destro su tutti questi ofggetti nn devo dichiarare lo 
stesso codice per ogni oggetto in questione....vero?
qual'è il metodo più elastico per far questo?
vi ringrazio in anticipo
alessio

 alessio
io farei cosě
JTextField text1 = new JTextField ();
JTextField text2 = new JTextField ();
JTextArea area1 = new JTextArea ();
JTextArea area2 = new JTextArea ();
JTextArea area3 = new JTextArea ();
// nella classe che fa l'init o simile chiamo il metodo initText
initText ( text1 );
initText ( text2 );
initText ( area1 );
initText ( area2 );
initText ( area3 );
// Con questo inizializzo tutti i text component mi č comodo quando in una
classe devo fare inizializzazioni simili per tutte i text elemet li
ggiungo qua e scrivo meno righe di codice
void initText ( JTextComponet text ) {
    text.addMouseListener(new MouseListener(){
              public void mousePressed(MouseEvent e) {
                  //System.out.println();
                  if(e.getButton()==3){
                      aboutDialog.show();
                  }
              }
              public void mouseReleased(MouseEvent e) {
                  //Aggiungere handler se necessari
              }
              public void mouseEntered(MouseEvent e) {
                  //Aggiungere handler se necessari
              }
              public void mouseExited(MouseEvent e) {
                  //Aggiungere handler se necessari
              }
              public void mouseClicked(MouseEvent e) {
                  //Aggiungere handler se necessari
              }
          });
}
Ciao
Ivan
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ivan
Inoltre se poi il tu listener č identico per tutti allora ti crei una
classe che estende MouseAdapter e la sostituisci alla dichiarazione
astratta


 
Ciao,
dichiari una classe che implementa il listener e poi ad ogni componente registri 
una istanza della classe in questione.
Marco
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Test extends JPanel  {
     public Test() {
         setLayout(new BorderLayout());
         JTextArea textArea = new JTextArea();
         textArea.addMouseListener(new DXListener());
 
         JTextField textField = new JTextField();	
         textField.addMouseListener(new DXListener());	
 
         add(textArea, BorderLayout.CENTER);
         add(textField, BorderLayout.SOUTH);	
     }
 
     class DXListener extends MouseAdapter {
         public void mouseReleased(MouseEvent e) {
             if(e.getButton() == MouseEvent.BUTTON3){
                 System.out.println("DX:" + e.getSource());
             }
         } 		
     }
 
     public static void main(String[] args) {	
         JFrame frame = new JFrame();
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.getContentPane().add(new Test());
         frame.setBounds(200, 200, 400, 400);
         frame.setVisible(true);	
     }	
}