@daemon117733
Токарь чпу

Как здесь работает this?

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

public class SimpleGuilB implements ActionListener {
    JButton button;
    public static void main(String [] args){
        SimpleGuilB gui = new SimpleGuilB();
        gui.go();

    }
    public void go(){
        JFrame frame = new JFrame();
        button = new JButton("click me");

        button.addActionListener(this); //ЧТО ЗДЕСЬ ДЕЛАЕТ THIS?

        frame.getContentPane().add(button);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(100,300);
        frame.setVisible(true);
    }
    public void actionPerformed(ActionEvent event){
       button.setText("I ve been clicked");
        System.out.println("fjgji");
    }

}
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
УКАЗЫВАЕТ НА ЭКЗЕМПЛЯР ОБЪЕМЛЮЩЕГО КЛАССА!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Вы создали класс SimpleGuilB и имплементировали в него интерфейс ActionListener который говорит о том что необходимо реализовать метод actionPerformed().
Дальше в вашем классе SimpleGuilB вы говорите button.addActionListener() т.е. сообщаете кнопке куда должны передаться события от кнопки и как аргумент сообщаете this. This говорит о том что грубо говоря "я\меня" т.е. именно этот созданный экземпляр класса SimpleGuilB который реализовал ActionListener .

Т.е. проще говоря this внутри класса говорит что это "я\меня\мое\у меня" у экземпляра.
В другом случае вы могли создать реализацию ActionListener примерно так
public class SimpleGuilB{ 
... код
public void go(){
...
button.addActionListener(new ButLister()); 
}
}

public class ButLister implements ActionListener{
public void actionPerformed(ActionEvent event){
        System.out.println("fjgji");
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы