Java actionlistener actionlistener在不同的类中执行
我有两个班:主班和一个叫“窗口”的班。 窗口类中有一些按钮,是否可以让“main”类知道发生了什么?简而言之,类“窗口”中的按钮应该触发主类中的一些内容Java actionlistener actionlistener在不同的类中执行,java,class,actionlistener,Java,Class,Actionlistener,我有两个班:主班和一个叫“窗口”的班。 窗口类中有一些按钮,是否可以让“main”类知道发生了什么?简而言之,类“窗口”中的按钮应该触发主类中的一些内容 或者我应该在“窗口”类中键入所有内容吗?是的,这是可能的ActionListener是接口,所以您可以让“main”类实现此接口,并将其作为Windows类构造函数中的参数传递给Windows类。 以下代码片段可以帮助您: 主类: package test; import java.awt.event.ActionEvent; import
或者我应该在“窗口”类中键入所有内容吗?是的,这是可能的
ActionListener
是接口,所以您可以让“main”类实现此接口,并将其作为Windows类构造函数中的参数传递给Windows类。以下代码片段可以帮助您:
主类:
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
//button clicked, so do you job here
}
}
package test;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Window extends JPanel
{
public Window(ActionListener listener)
{
JButton b = new JButton("Button 1");
b.addActionListener(listener);
add(b);
//do other stuff
}
public static void main(String[] args)
{
Window w = new Window(new Main());
//continue with initialization process
}
}
Windows类:package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
//button clicked, so do you job here
}
}
package test;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Window extends JPanel
{
public Window(ActionListener listener)
{
JButton b = new JButton("Button 1");
b.addActionListener(listener);
add(b);
//do other stuff
}
public static void main(String[] args)
{
Window w = new Window(new Main());
//continue with initialization process
}
}
你想通知全班吗?与
静态
字段一样?(不要这样做)相反,让你的Window
对象创建一个Main
对象并对其进行操作。但是这不就是在Window类中做所有事情吗?是的,所有代码都可以写在同一个文件中,但这不是一个好的设计。最初的问题就是这样发生的,我试图创建一个设计良好的程序。这不是问题,而是解决方案。谢谢你。虽然我的main方法在main类中,但我将“this”传递给了“window”constructor:)