Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100

    Overriding oltre al metodo...anche la firma

    Salve,ho la necessita di poter effettuare oltre l'overriding di un metodo di un interfaccia,mi servirebbe anche la possibilità di potergli cambiare la firma,ovvero deve poter accettare in input un altra variabile(string)oltre la sua normale(ActionEvent).Posto il codice sotto.Se esiste qlk altro metodo per risolvere il problema(tramite chiamata a classi chiamanti per prelevare manualmente la variabile string,è ben accetto.
    Lo scopo del porgramma è istanziare due oggetti di tipo button,aventi come costruttori due stringhe,la prima viene utilizzata per il testo ke appare sul bottone,la seconda per il testo che compare quando si fa CLICK sul bottone.la seconda va passata all'interfaccia listener.Ed io nn so come passargliela
    Codice primordiale:
    public class main
    {
    class list implements ActionListener
    {

    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(null,);
    }

    }
    class pulsante
    {
    private JButton b;
    pulsante(String s1,String s2)
    {
    b=new JButton(s1);
    b.addActionListener(new list());
    }
    }
    public static void main(String asd[])
    {

    }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Overriding oltre al metodo...anche la firma

    Originariamente inviato da antony85
    oltre l'overriding di un metodo di un interfaccia,mi servirebbe anche la possibilità di potergli cambiare la firma,ovvero deve poter accettare in input un altra variabile(string)oltre la sua normale(ActionEvent).
    Se cambi signature non è più un override e quindi non ti "funziona" più (e non compila nemmeno).

    Originariamente inviato da antony85
    Lo scopo del porgramma è istanziare due oggetti di tipo button,aventi come costruttori due stringhe,la prima viene utilizzata per il testo ke appare sul bottone,la seconda per il testo che compare quando si fa CLICK sul bottone.la seconda va passata all'interfaccia listener.Ed io nn so come passargliela
    Infatti non devi passarla al metodo del listener!!! Ci sono altri modi più eleganti.


    Caso 1) Fare in modo che il testo sia una "proprietà" del listener.

    codice:
    class MioPulsanteListener implements ActionListener {
        private String textOnClick;
        
        public MioPulsanteListener(String textOnClick) {
            this.textOnClick = textOnClick;
        }
        
        public void actionPerformed(ActionEvent e) {
            JButton b = (JButton) e.getSource();
            b.setText(textOnClick);
        }
    }
    Poi semplicemente:

    tuoButton1.addActionListener(new MioPulsanteListener("testo1"));
    tuoButton2.addActionListener(new MioPulsanteListener("testo2"));


    Caso 2) Fare in modo che il testo sia una "proprietà" del pulsante, quindi va esteso JButton

    codice:
    class MioPulsante extends JButton {
        private String textOnClick;
    
        public MioPulsante(String text, String textOnClick) {
            super(text);
            this.textOnClick = textOnClick;
        }
    
        public String getTextOnClick() {
            return textOnClick;
        }
    }
    E nel listener (che si potrebbe anche incapsularlo in MioPulsante):

    codice:
    public void actionPerformed(ActionEvent e) {
        MioPulsante b = (MioPulsante) e.getSource();
        b.setText(b.getTextOnClick());
    }
    E non sono le uniche due possibilità!! Insomma ... è inutile che smanetti sui metodi ... pensa in termini di oggetti e proprietà!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.