哪个对象指向“这个”?

时间:2014-01-08 11:42:42

标签: java swing this

我正在使用java swing以及一般java中的第一次体验。有谁能告诉我哪个对象“this.button1”(例如)指向?是否有可能取代“这个”?我已经读过“this”指的是实际的对象,但在这种情况下是哪一个呢?

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


public class BeispielListener extends JFrame implements ActionListener
{
JButton button1;
JButton button2;
JButton button3;
JLabel label;
JPanel panel;

public BeispielListener(){
    this.setTitle("ActionListener Beispiel");
    this.setSize(400, 200);
    panel = new JPanel();

    // Leeres JLabel-Objekt wird erzeugt
    label = new JLabel();

    //Drei Buttons werden erstellt
    button1 = new JButton("Button 1");
    button2 = new JButton ("Button 2");
    button3 = new JButton ("Button 3");

    //Buttons werden dem Listener zugeordnet
    button1.addActionListener(this);
    button2.addActionListener(this);
    button3.addActionListener(this);

    //Buttons werden dem JPanel hinzugefügt
    panel.add(button1);
    panel.add(button2);
    panel.add(button3);

    //JLabel wird dem Panel hinzugefügt
    panel.add(label);
    this.add(panel);
}

public static void main(String[] args)
{
    // Ein neues Objekt der Klasse BeispielListener wird erzeugt
    // und sichtbar gemacht
    BeispielListener bl = new BeispielListener();
    bl.setVisible(true);
}

public void actionPerformed (ActionEvent ae){
    // Die Quelle wird mit getSource() abgefragt und mit den
    // Buttons abgeglichen. Wenn die Quelle des ActionEvents einer
    // der Buttons ist, wird der Text des JLabels entsprechend geändert
    if(ae.getSource() == this.button1){
        label.setText(("Button 1 wurde betätigt"));
    }
    else if(ae.getSource() == this.button2){
        label.setText("Button 2 wurde betätigt");
    }
    else if (ae.getSource() == this.button3){
        label.setText(("Button 3 wurde betätigt"));
    }
}
}

谢谢!

3 个答案:

答案 0 :(得分:1)

this指向您正在使用的当前对象。因此,在您的代码中,它指向BeispielListener实例。

答案 1 :(得分:1)

来自doc

  

在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法在实例方法或构造函数中引用当前对象的任何成员。

此处this.button1正在重新声明当前类的button1变量

阅读完整的文档,您将获得一个清晰的概念。

答案 2 :(得分:0)

在Java中,this只是您正在使用的当前对象的引用。在这种情况下,它是BeispielListener的参考。