[英]Passing an Application Class Reference to Constructor (Java)
我有一个应用程序类,如下所示,该类从i)实例化对象:i)我编写的扩展JFrame并实现ActionListener的UI类,以及ii)简单的“发票”类。 前者将用作主界面,接受特定值(“发票编号”)的文本输入,并将这些值传递给后一类(发票)。 我想扩展应用程序类(在其中实现main),以允许在其中实现actionPerformed()方法(当然不在main()内),以侦听UI类中两个按钮之一的按下,在事件上创建Purchase类的新实例,该实例将依次向单个UI类实例的button.addActionListener()方法传递“ this”引用。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CreatePurchase implements ActionListener {
boolean isInterface = true;
CreatePurchase testing = new CreatePurchase();
SupportiveJFrame uiFrame = new SupportiveJFrame( testing, "Southwest Invoice Systems", isInterface );
Purchase firstPurchase = new Purchase( uiFrame, true );
public static void main( String args[] ){
}
public void actionPerformed( ActionEvent e ){
Object source = e.getSource();
if( source == uiFrame.newInvoice){
//New object created here
}
}
}
我的问题是,如何将对应用程序类的引用传递给UI构造函数,从而允许将其传递给JButton“ newObject”? 如果将“ uiFrame”和“ firstPurchase”的初始化放置在main()中,则“ firstPurchase”将超出actionPerformed(ActionEvent e)的范围。
您可以使用关键字this
获得对“当前实例”的引用。 我不确定你要将它添加到哪个类中,但这里有一个例子可以证明这个想法:
public class A {
private B owner;
public A(B owner) {this.owner = owner;}
public void callOwnerDoSomething() {owner.doSomething();}
}
public class B {
public A theA = new A(this);
public static void main(String[] args) {
new B().theA.callOwnerDoSomething(); // prints "Hello"
}
public void doSomething() {
System.out.println("Hello");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.