Java 处理大量事件侦听器?

Java 处理大量事件侦听器?,java,events,actionlistener,Java,Events,Actionlistener,如果我的应用程序有240个JButton,那么管理事件跟踪的最佳方法是什么?除了写200多次以下内容外,还有什么更好的选择: if (e.getSource() == btn[0]) {} 您可以将行为与数据分开。对于具有类似行为的一组按钮,只为执行的操作编写一个侦听器。然后使用setTag()/getTag()或在自定义子类中扩展和添加数据,将数据存储在JButton实例中。您可以将行为与数据分开。对于具有类似行为的一组按钮,只为执行的操作编写一个侦听器。然后使用setTag()/getTa

如果我的应用程序有240个JButton,那么管理事件跟踪的最佳方法是什么?除了写200多次以下内容外,还有什么更好的选择:

if (e.getSource() == btn[0]) {}

您可以将行为与数据分开。对于具有类似行为的一组按钮,只为执行的操作编写一个侦听器。然后使用setTag()/getTag()或在自定义子类中扩展和添加数据,将数据存储在JButton实例中。

您可以将行为与数据分开。对于具有类似行为的一组按钮,只为执行的操作编写一个侦听器。然后使用setTag()/getTag()或在自定义子类中扩展和添加数据,将数据存储在JButton实例中

监听器将负责基本任务,如更改JButton ImageIcon

所有侦听器都将包含对生成事件的组件的引用

所以你可以做一些基本的事情,比如:

ActionListener al = new ActionListener(
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        JButton button = (JButton)e.getSource();
        button.setIcon(...);
    }
});

for (int i = 0; i < 240; i++)
{
    JButton button = new JButton(...);
    button.addActionListener( al );
    panel.add( button );
}
ActionListener al=新建ActionListener(
{
@凌驾
已执行的公共无效操作(操作事件e)
{
JButton按钮=(JButton)e.getSource();
按钮。设置图标(…);
}
});
对于(int i=0;i<240;i++)
{
JButton按钮=新JButton(…);
addActionListener(al);
面板。添加(按钮);
}
监听器将负责基本任务,如更改JButton ImageIcon

所有侦听器都将包含对生成事件的组件的引用

所以你可以做一些基本的事情,比如:

ActionListener al = new ActionListener(
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        JButton button = (JButton)e.getSource();
        button.setIcon(...);
    }
});

for (int i = 0; i < 240; i++)
{
    JButton button = new JButton(...);
    button.addActionListener( al );
    panel.add( button );
}
ActionListener al=新建ActionListener(
{
@凌驾
已执行的公共无效操作(操作事件e)
{
JButton按钮=(JButton)e.getSource();
按钮。设置图标(…);
}
});
对于(int i=0;i<240;i++)
{
JButton按钮=新JButton(…);
addActionListener(al);
面板。添加(按钮);
}

听者是做什么的?嗨,我想做一个基于瓷砖的游戏。监听器将负责基本任务,如更改JButton ImageIcon。您可能希望向我们提供有关您的问题和代码的更多相关信息,以获得更好的答案,但如果是基于互动程序的游戏,则所有互动程序按钮可以共享同一个监听器,在监听器中有一个机制,找出网格中的哪个tile/按钮被按下,然后将此信息传递给模型。同样,一个更具体的答案可能需要一个更充实的问题。请看以下类似问题的答案,(这是我的!),(另一个我最近提出的类似问题)。听众是做什么的?嗨,我正在尝试制作一个基于瓷砖的游戏。监听器将负责基本任务,如更改JButton ImageIcon。您可能希望向我们提供有关您的问题和代码的更多相关信息,以获得更好的答案,但如果是基于互动程序的游戏,则所有互动程序按钮可以共享同一个监听器,在监听器中有一个机制,找出网格中的哪个tile/按钮被按下,然后将此信息传递给模型。同样,一个更具体的答案可能需要一个更充实的问题。请看一下以下类似问题的答案,(这是我的!),(另一个我最近提出的类似问题)。