Seguidores

MIS WEBS



domingo, 4 de marzo de 2018

CLASES INTERNAS ANÓNIMAS java


CLASES INTERNAS ANÓNIMAS




Cuando en un constructor utilizamos una instancia de clase,
JSpinner JS_pinner=new JSpinner(new SpinnerNumberModel(20,0,100,10));
 Podemos en lugar de eso crear la clase entera dentro:
JSpinner JS_pinner=new JSpinner(new SpinnerNumberModel(20,0,100,10){ rehacemos los métodos………….});

Imaginemos que nos encontramos en el caso tener creado un JSpinner y decidimos modificar los pulsadores de las flechitas, el de arriba decrecerá en lúgar de aumentar y viceversa.

Como siempre:
class Lamina extends JPanel{
       public Lamina() {
             JP_Spinner = new JPanel();
JS_pinner=new JSpinner(new Modifica_flecahas());
             //damos tamaño al Spiner
             JS_pinner.setPreferredSize(new Dimension(200,50));
       JS_pinner.setFont(new Font("Arial Black",Font.CENTER_BASELINE,20));
             JP_Spinner.add(JS_pinner);
             add(JP_Spinner);   
       }
       //ahora crearemos una clase interna para modificar los métodos
       private class Modifica_flecahas extends SpinnerNumberModel{
             public Modifica_flecahas() {
                    super(20,0,100,10);
             }
             //ahora sobreescribimos los métodos
             public Object getNextValue() {
                    //le decimos que en lugar del siguiente. regrese el previo
                    return super.getPreviousValue();
             }
             public Object getPreviousValue() {
                    //le decimos que en lugar del siguiente. regrese el previo
                    return super.getNextValue();
             }           
       }
       JSpinner JS_pinner;
       JPanel JP_Spinner;
      
}


Con una clase interna anónima sería así, en lugar de crear una clase interna y llamarla en el constructor de JSpinner, lo hacemos todo dentro de la llamada:

class Lamina extends JPanel{
      
       public Lamina() {
             JP_Spinner = new JPanel();

       JSpinner JS_pinner=new JSpinner(new SpinnerNumberModel(20,0,100,10) {
                    //REESCRIBIMOA Los Métodos
public Object getNextValue() {
                    //le decimos que en lugar del siguiente. Regrese el previo
                           return super.getPreviousValue();
                    }
                    public Object getPreviousValue() {
                    //le decimos que en lugar del siguiente. Regrese el previo
                           return super.getNextValue();
                    }
             });
             //damos tamaño al Spiner
             JS_pinner.setPreferredSize(new Dimension(200,50));
       JS_pinner.setFont(new Font("Arial Black",Font.CENTER_BASELINE,20));
             JP_Spinner.add(JS_pinner);
             add(JP_Spinner);
            
      
       }
       JSpinner JS_pinner;
       JPanel JP_Spinner;

      
}

No hay comentarios:

Publicar un comentario

Buscar este blog

Sandisk y Western Digital