我正在使用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"));
}
}
}
谢谢!
答案 0 :(得分:1)
this
指向您正在使用的当前对象。因此,在您的代码中,它指向BeispielListener
实例。
答案 1 :(得分:1)
来自doc
在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法在实例方法或构造函数中引用当前对象的任何成员。
此处this.button1
正在重新声明当前类的button1
变量
阅读完整的文档,您将获得一个清晰的概念。
答案 2 :(得分:0)
在Java中,this
只是您正在使用的当前对象的引用。在这种情况下,它是BeispielListener
的参考。