Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Drizzt

    nagyúr

    válasz Dinter #10108 üzenetére

    Valahol van erre minta kódod?

    "Ha én az EventHandler-t az App-on belül valósítom meg, akkor minden gombnak az App osztály adattagjának kell lennie, hogy a handle függvényben le tudjam ellenőrizni, hogy melyik osztályban történt a kattintás."

    Ez szerintem nem így van. Vagyis nem teljesen értem, hogy mit értesz az alatt, hogy le kell tudd ellenőrizni, hogy melyik osztályban történt a kattintás? Miért kellene ezt leellenőrizni? Ha bárhol csinálsz EventHandler-t implementáló osztályt, azt be tudod állítani event handlernek. Akár csinálhatsz egy olyan függvényt az Appban, ami EventHandler<MouseEvent>-et ad vissza, pl. így:

    Class MyApplication {
    EventHandler<MouseEvent> createTeamHandler(Team t) {
    return new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent e) {
    System.out.println("MouseEventhandler runs");
    t.doSomething();
    }
    };
    }
    }

    És akkor ahol akarod használni:

    MyApplication app = new MyApplication();
    Team t = new Team();
    button.addEventHandler(app.createTeamHandler(t));

    Mondjuk Javafx-hez sem értek. De ehhez hasonló dolog simán megy pl.: Consumer-ekkel:

    public class Book{

    public Book(String name) {
    this.name = name;
    }

    private String name;
    private Consumer<Book> consumer;

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public void setConsumer(Consumer<Book> bookConsumer) {
    consumer = bookConsumer;
    }

    public void consume() {
    consumer.accept(this);
    }
    }

    public class Tester {

    public static Consumer<Book> getBookConsumer(int number) {
    return new Consumer<Book>() {
    @Override
    public void accept(Book book) {
    System.out.println(number);
    }
    };
    }

    public static void test() {
    Book b1 = new Book("AGILE workflow");
    b1.setConsumer((book -> {
    System.out.println(visitables.size());
    }));
    b1.consume();
    b1.setConsumer(getBookConsumer(8));
    b1.consume();
    }
    }

Új hozzászólás Aktív témák