gpt4 book ai didi

java - 使用 MVC 创建外部 ActionListener

转载 作者:行者123 更新时间:2023-12-01 13:03:18 25 4
gpt4 key购买 nike

Actionlistener,不起作用,点击 crear_Arbitro 时弹出 joptionpane 时没有任何反应。在为 JFrame 内的不同 JPanel 创建外部 ActionListener 类时遇到困难,想法是制作一些 Jpanels,然后使用 JTabbedPane 将其插入到 JFrame 中,并学习使用 MVC 架构模式来创建 GUI,这里是一个简短的示例我想做的事情的代码:

Controller :

public class Controlador_Universal {

public VentanaPrincipal_vista ventanaPrincipalVista;
public Arbitros_modelo arbitrosModelo;
public ArbitrosListener ArbitrosListener;

public Controlador_Universal() {
ventanaPrincipalVista = new VentanaPrincipal_vista();
ArbitrosListener ArbitrosListener = new ArbitrosListener();
ventanaPrincipalVista.pestañaArbitros.crear_Arbitro.addActionListener(ArbitrosListener);
}

听众:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import modelo.Arbitros_modelo;
import controlador.Controlador_Universal;

public class ArbitrosListener extends Controlador_Universal implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == super.ventanaPrincipalVista.pestañaArbitros.crear_Arbitro) {
JOptionPane.showMessageDialog(null, "Presionó en crear Arbitro");
}
}
}

最佳答案

遵循命名争用。不要在类名或变量名中使用 _ 下划线。变量名称应以小写字母开头,并且最好包含特殊字符(这真的很糟糕......)

关于问题:与

ArbitrosListener ArbitrosListener = new ArbitrosListener();

您正在创建 ArbitrosListener 监听器类的新实例。尽管该类扩展了 Controlador_Universal 类,但您在其中创建的实例是一个实例。所以查询

if(e.getSource() == super.ventanaPrincipalVista.pestañaArbitros.crear_Arbitro)

永远不可能是true:getSource 方法返回添加了操作监听器的实例的crear_Arbitro,但这是一个与 Action 监听器本身不同的一个。

根据当前代码,您甚至不需要此检查。特别是,您可能让操作监听器扩展 Controlador_Universal 类。根据当前代码,您可以编写

public class ArbitrosListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Presionó en crear Arbitro");
}
}

这应该已经可以工作了。当您有多个按钮时,您可以省略 ArbitrosListener 类,而使用匿名监听器,如下所示

ventanaPrincipalVista.pestañaArbitros.crear_Arbitro.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Presionó en crear Arbitro");
}
});

但是,所有这些似乎与 MVC 无关,因此您可能应该更清楚地指出这与模型、 View 和 Controller 有何关系。

关于java - 使用 MVC 创建外部 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com