Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Diciembre 02, 2008, 01:04:53
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Nuevo foro de Control de versiones.

+  Foros Java y C/Linux
|-+  Programación
| |-+  Java J2SE
| | |-+  acciones con el boton derecho del raton
« anterior próximo »
Páginas: [1] 2 Enviar tema Imprimir
Autor Tema: acciones con el boton derecho del raton  (Leído 826 veces)
alemag
Full Member
***
Mensajes: 181


Ver Perfil Email


« en: Mayo 27, 2008, 05:54:48 »

Saludos, tengo una lista, JList, para presentar, pero si selecciono todas las cadenas con el boton derecho del raton, para hacer copy y paste, no hace nada, en cambio con el control+C y control+V si me lo pega en otro fichero, es decir, no me va con el boton derecho del raton.

Que accion tengo que hacer para que me funcione bien ??

Muchas gracias.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #1 en: Mayo 27, 2008, 07:06:12 »

Hola:

El menú sobre los items de la lista tienes que hacerlo tú, no sale por defecto.

Se bueno.
En línea

ChusterBoy
Newbie
*
Mensajes: 46



Ver Perfil Email
« Respuesta #2 en: Mayo 31, 2008, 02:05:33 »

Ehm, ps precisamente como comento Chuidiang, tu tienes que crear el menu, es decir un PopUp, y asi mismo ponerle un escucha de raton al elemento sobre el cual quieres que aparezca el PopUp, asi mismo habilitar el boton derecho del mouse, ehm algo mas o menos asi:

JTextArea area=new JTextArea();
private JPopupMenu pop;
pop=new JPopupMenu();
private JMenuItem cortarpop,copiarpop,pegarpop;
private JSeparator separador =new JSeparator();

copiarpop=new JMenuItem("Copiar");
copiarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
pop.add(copiarpop);         
pop.add(separador);
cortarpop=new JMenuItem("Cortar");
cortarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
pop.add(cortarpop);         
pop.add(separador);
pegarpop=new JMenuItem("Pegar");
pegarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
pop.add(pegarpop);   

ActionListener al=new ActionListener();
cortarpop.addActionListener(al);
copiarpop.addActionListener(al);
pegarpop.addActionListener(al);   

area.addMouseListener(new MouseAdapter(){
   public void mousePressed(MouseEvent ev){
      areaMousePressed(ev);
      }

//Metodo para menu popup
private void areaMousePressed(MouseEvent ev){
   boolean textoSeleccionado=area.getSelectedText()!=null;
        cortarpop.setEnabled(textoSeleccionado);
   copiarpop.setEnabled(textoSeleccionado);
   if(ev.getButton()==MouseEvent.BUTTON3)
      pop.show(area,ev.getX(),ev.getY());
      }

A grandes rasgo eso es lo que deberias de hacer, ya solo le programa los eventos de copiado,cortasdo y pegado, asi mismo importar la libreria apropiada y listo, ehm eso de que copia y pega con las teclas de abreviacion es logico ps eso esta activado por default, igual cuando presionas Ctrl+E se selecciona todo...jeje, espero haber ayudado..
« Última modificación: Mayo 31, 2008, 02:08:19 por chusterboy » En línea

╠ Жд∂ع Ђ¥ ™ ╣:

(¯`·._.·×º°”˜`”°º
alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #3 en: Junio 02, 2008, 10:37:53 »

Yo tengo una lista JList y un panel JScrollPane sobre la lista, el area sobre el que tengo que hacer el popup seria sobre la lista o sobre el menu Huh

El codigo anterior que seria clavado para todos los menus popups, pero cambiando el nombre de las variables ??

En línea
alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #4 en: Junio 03, 2008, 12:48:50 »

El pop up menu creo que lo tengo bien, pero me falla el asociarlo al area determinada, que tengo que hacerlo sobre la lista o sobre el scroll pane,  y donde le indico eso  Huh

El codigo que tengo es (lo que mas me importa es la ultima parte, lo de los actionListener, que me da errores ahi):

      JPopupMenu pop=new JPopupMenu();
      JMenuItem cortarpop,copiarpop,pegarpop;
      JSeparator separador =new JSeparator();
      copiarpop=new JMenuItem("Copiar");
      copiarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK));
      pop.add(copiarpop);         
      pop.add(separador);
      cortarpop=new JMenuItem("Cortar");
      cortarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK));
      pop.add(cortarpop);         
      pop.add(separador);
      pegarpop=new JMenuItem("Pegar");
      pegarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK));
      pop.add(pegarpop);   


      sc_pos.addMouseListener(new MouseAdapter(){
         public void mousePressed(MouseEvent ev){
            areaMousePressed(ev);
      } });

      void areaMousePressed(MouseEvent ev){
       boolean textoSeleccionado=sc_pos.getSelectedText()!=null;
            cortarpop.setEnabled(textoSeleccionado);
       copiarpop.setEnabled(textoSeleccionado);
       if(ev.getButton()==MouseEvent.BUTTON3)
          pop.show(sc_pos,ev.getX(),ev.getY());
      }   });

Por favor, alguien podria ayudarme ?

Muchas gracias.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #5 en: Junio 03, 2008, 02:17:33 »

Hola:

Asócialo sobre el JList. Con el addMouseListener y el mouseClicked().

Se bueno.
En línea

alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #6 en: Junio 04, 2008, 05:53:07 »

Pongo este codigo, pero me da error, como si estuviese mal construido el codigo:

  ActionListener al_lista = new ActionListener() {
      public void actionPerformed(ActionEvent actionevent)
         areaMousePressed(ev);
   };

   void areaMousePressed(MouseEvent ev){
      boolean textoSeleccionado=list_pos.getSelectedText()!=null;
      cortarpop.setEnabled(textoSeleccionado);
      copiarpop.setEnabled(textoSeleccionado);
      if(ev.getButton()==MouseEvent.BUTTON3)
        pop.show(lis_pos,ev.getX(),ev.getY());
   };

   lista.addActionListener(al_lista);

A que se puede deber ?

Y otra duda, donde pongo el MouseListener y el mouseClicked ? Es que, ahora mismo, la verdad, estoy bastante perdido.

Perdonad por tanta pregunta.
Gracias.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #7 en: Junio 04, 2008, 06:00:39 »

Hola:

MouseListener tiene varios métodos, debes implementarlo TODOS y no solo mousePressed(). Uno de ellos es mouseClicked(). Haz tu código en el que quieras (pressed o clicked) según cuando quieras que salga el menú.

Debes añadir el addMouseListener como habías hecho en principio, pero sobre el JList en vez de sobre el JScrollPane.

Se bueno.
En línea

alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #8 en: Junio 04, 2008, 06:19:44 »

Bueno, acabo de conseguir que me saliese el menu, pero no se que codigo tengo que meter en cada listener asociado.

1- Como le digo que copie el texto seleccionado, etc Huh

2- Este codigo, que lo pongo en el mouseClicked de cada item del popup verdad ?

Gracias.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #9 en: Junio 04, 2008, 07:17:43 »

Hola:

El item seleccionado se le pide al JList con el método getSelectedValue().

Sólo tienes que poner un addMouseListener() para toda la lista.

Se bueno.

En línea

alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #10 en: Junio 04, 2008, 07:31:06 »

Y dentro del codigo del item del popup menu cut (y de copy, paste y select all)  como lo tendria que implementar ? ese metodo que seria un addActionListener ?


Ando un poco perdido, y estoy buscando por ahi informacion pero nada.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #11 en: Junio 04, 2008, 10:06:45 »

Hola:

Aquí tienes un ejemplo con un editor de textos.

Se bueno.
En línea

alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #12 en: Junio 04, 2008, 11:12:20 »

Si, todo eso del enlace anterior lo entiendo, pero lo que no se es el codigo que tengo que poner en el menu del item de copiar, por ejemplo, para que realice dicha acción.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1974



Ver Perfil WWW Email
« Respuesta #13 en: Junio 04, 2008, 11:29:05 »

En el enlace anterior se hace un "copiar". ¿Lo has probado?

Se bueno.
En línea

alemag
Full Member
***
Mensajes: 181


Ver Perfil Email
« Respuesta #14 en: Junio 06, 2008, 09:40:30 »

Puse este codigo, pero no me va, es mas, ahora en lugar de tres opciones en el menu, de copiar, cortar, pegar, me aparecen las dos ultimas superpuestas casi del todo encima de la primera.

    public class Accioncopiar extends AbstractAction
    {
       public void actionPerformed (ActionEvent e)
       {
          putValue(Action.NAME, "Copiar");
          putValue(
             Action.ACCELERATOR_KEY,
             KeyStroke.getAWTKeyStroke('C', Event.CTRL_MASK));
       }
    }

   ....
      Accioncopiar copiar=new Accioncopiar();
      final JPopupMenu pop=new JPopupMenu();
      final JMenuItem cortarpop,copiarpop,pegarpop;
      JSeparator separador =new JSeparator();
      copiarpop=new JMenuItem(copiar);
      copiarpop.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK));
      pop.add(copiarpop);         
     ..... y luego las otras dos opciones del menu

Entra en el metodo, pero no hace nada.
Que es lo que hago mal ? No le hay que poner un actionListener ?
En línea
Páginas: [1] 2 Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!