elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Clase interna, acceder a objetos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Clase interna, acceder a objetos  (Leído 4,567 veces)
ltbl

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Clase interna, acceder a objetos
« en: 5 Marzo 2011, 14:24 pm »

Hola. Pues tengo esta duda en java. Tengo una clase interna anonima para tratar eventos:
Código
  1. bonificacion.elementAt(totalBonificacion).addMouseListener(new MouseListener(){//metodos}
  2.  

quiero saber como acceder y modificar objetos o variables de la clase principal.

Por ejemplo, en este caso, el objeto  al que le estoy añadiendo el listener es una label, que quiero poner en setEnabled(false) al clicar encima con el raton.

¿alguien me explica como puedo hacerlo? gracias

Edito: he podido declarando la label como final pero no se si hay alguna forma más correcta


« Última modificación: 5 Marzo 2011, 14:37 pm por ltbl » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Clase interna, acceder a objetos
« Respuesta #1 en: 6 Marzo 2011, 00:03 am »

-evita usar mouselistener es mejor que extiendas de mouseAdapter asi tienes codigo mas limpio

-que una variable sea final es algo muy bueno en realidad no ponerle a una variable final especialmente si es global es una mala idea y conlleva a que vuelvas todo mas difícil así que a tus variables globales ponle final a menos que tengas una buena razón por no hacerlo y si necesitas que una variable sea final pues no te hagas problemas

-si de todas maneras quieres trabajar sin usar final entonces así puedes hacerlo
Así primero pones la variable como global luego creas un método en la clase principal y finalmente llamas al método que has creado desde la clase anónima interna

Código:
package org.kodejava.example.swing;

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MouseClickEventDemo extends JFrame {
    private JLabel label = new JLabel();
       
     public MouseClickEventDemo() {
        initComponents();
    }

    private void initComponents() {
        setSize(300, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        textArea.setText("Click Me!");

        textArea.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                presionoBoton(e)
            }
        });

        getContentPane().add(textArea);
    }

    public void presionoBoton(MouseEvent e) {
     //as lo que quieras con el label
   }
}



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines