Java JButton上鼠标侦听器的效率

Java JButton上鼠标侦听器的效率,java,swing,graphics,time-complexity,jcomponent,Java,Swing,Graphics,Time Complexity,Jcomponent,假设我创建了nJButton并将它们随机放置在JFrame中,然后在每个JButton上添加一个鼠标侦听器 我的问题是: 当我单击任何一个JButton时,Java是否检查所有JButton以确定我正在单击哪个按钮(最坏情况:n检查),还是不需要检查所有按钮(最坏情况:1检查) 我问这个问题的原因是因为我正在尝试与2D图形交互,我知道检查我是否单击某个特定形状的方法之一是通过检查所有形状是否包含我当前的鼠标坐标。所以如果我画10个形状,最坏的情况是10个。老实说,我觉得这样效率很低 所以我想知道

假设我创建了
n
JButton并将它们随机放置在JFrame中,然后在每个JButton上添加一个鼠标侦听器

我的问题是: 当我单击任何一个JButton时,Java是否检查所有JButton以确定我正在单击哪个按钮(最坏情况:
n检查
),还是不需要检查所有按钮(最坏情况:
1检查

我问这个问题的原因是因为我正在尝试与2D图形交互,我知道检查我是否单击某个特定形状的方法之一是通过检查所有形状是否包含我当前的鼠标坐标。所以如果我画10个形状,最坏的情况是10个。老实说,我觉得这样效率很低

所以我想知道JComponent如何处理actionEvent。通过检查所有JC组件,还是不检查


如果没有,Java如何确定单击了哪个按钮?

在您的例子中,如果将JButton与按钮侦听器一起使用,则鼠标侦听器是多余的,因为JButton将抛出自己的button pressed事件,该事件标识正在按下的按钮。“你是不是让这个问题变得比需要的更困难了?”MarsAtomic说,这只是一个假设情景。您可以将其视为每个按钮只有actionListener。那么,actionListener的效率是多少呢?我的意思是,你正在做一个苹果对桔子的比较。JButton将抛出自己的事件,让您知道事件源。大概,您的形状没有,所以您只需要按照所描述的方式对它们进行迭代。如果对它们进行子类化并实现ActionListener,则可以从每个特定子类形状中抛出ActionEvents。老实说,我不知道Java是如何确定哪个组件抛出哪个事件的,但我是个白痴,我知道有一种方法可以最终得到你想要的东西不,每件事都只有一个线程,EDT处理事件队列“老实说,我觉得效率很低。”我觉得你被过早的优化搞糊涂了。只有在应用程序运行时才需要担心这类事情。开始减速,然后,只有到那时,运行优化工具以确定减速的位置。但就在“JButton上的鼠标侦听器”这个主题上。你能听到我的牙齿在磨牙吗?
JButton
应该有一个
ActionListener
。当用户用鼠标单击按钮时,动作监听器将响应(激发),当用户点击按钮并使用键盘激活按钮时,动作监听器也将激发。在您的情况下,如果您将JButton与按钮监听器一起使用,鼠标侦听器是多余的,因为JButton将抛出自己的button pressed事件,该事件标识正在按下的按钮。“你是不是让这个问题变得比需要的更困难了?”MarsAtomic说,这只是一个假设情景。您可以将其视为每个按钮只有actionListener。那么,actionListener的效率是多少呢?我的意思是,你正在做一个苹果对桔子的比较。JButton将抛出自己的事件,让您知道事件源。大概,您的形状没有,所以您只需要按照所描述的方式对它们进行迭代。如果对它们进行子类化并实现ActionListener,则可以从每个特定子类形状中抛出ActionEvents。老实说,我不知道Java是如何确定哪个组件抛出哪个事件的,但我是个白痴,我知道有一种方法可以最终得到你想要的东西不,每件事都只有一个线程,EDT处理事件队列“老实说,我觉得效率很低。”我觉得你被过早的优化搞糊涂了。只有在应用程序运行时才需要担心这类事情。开始减速,然后,只有到那时,运行优化工具以确定减速的位置。但就在“JButton上的鼠标侦听器”这个主题上。你能听到我的牙齿在磨牙吗?
JButton
应该有一个
ActionListener
。当用户用鼠标单击按钮时,动作监听器将响应(激发),当用户点击按钮并使用键盘激活按钮时,动作监听器也将激发。在您的情况下,如果您将JButton与按钮监听器一起使用,鼠标侦听器是多余的,因为JButton将抛出自己的button pressed事件,该事件标识正在按下的按钮。“你是不是让这个问题变得比需要的更困难了?”MarsAtomic说,这只是一个假设情景。您可以将其视为每个按钮只有actionListener。那么,actionListener的效率是多少呢?我的意思是,你正在做一个苹果对桔子的比较。JButton将抛出自己的事件,让您知道事件源。大概,您的形状没有,所以您只需要按照所描述的方式对它们进行迭代。如果对它们进行子类化并实现ActionListener,则可以从每个特定子类形状中抛出ActionEvents。老实说,我不知道Java是如何确定哪个组件抛出哪个事件的,但我是个白痴,我知道有一种方法可以最终得到你想要的东西不,每件事都只有一个线程,EDT处理事件队列“老实说,我觉得效率很低。”我觉得你被过早的优化搞糊涂了。只有在应用程序运行时才需要担心这类事情。开始减速,然后,只有到那时,运行优化工具以确定减速的位置。但就在“JButton上的鼠标侦听器”这个主题上。你能听到我的牙齿在磨牙吗?
JButton
应该有一个
ActionListener
。当用户用鼠标点击按钮时,动作监听器将响应(激发),当用户点击按钮并用键盘激活按钮时,动作监听器也将激发。