Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择不带循环的阵列的所有组件_Java_Arrays_Listener - Fatal编程技术网

Java 选择不带循环的阵列的所有组件

Java 选择不带循环的阵列的所有组件,java,arrays,listener,Java,Arrays,Listener,我已经制作了一个包含jlabel的数组,并希望为它们添加一个侦听器 听众不需要确切地知道点击了哪一个,只需要知道点击了哪一个。 有没有办法将侦听器添加到整个数组中,而不是使用“for()”循环 感谢阅读。y您可以在JPanel(或按钮所在的任何组件)上注册侦听器,因此您只需编写一个侦听器 y您可以在JPanel(或按钮所在的任何组件)上注册侦听器,因此只需编写一个侦听器 不,没有现成的解决方案,好的。除了使用愚蠢的黑客,我认为你可能不得不使用for循环,它可能是一个10行代码,没什么好担心的。不

我已经制作了一个包含
jlabel
的数组,并希望为它们添加一个侦听器

听众不需要确切地知道点击了哪一个,只需要知道点击了哪一个。 有没有办法将侦听器添加到整个数组中,而不是使用“for()”循环


感谢阅读。

y您可以在JPanel(或按钮所在的任何组件)上注册侦听器,因此您只需编写一个侦听器

y您可以在JPanel(或按钮所在的任何组件)上注册侦听器,因此只需编写一个侦听器

不,没有现成的解决方案,好的。除了使用愚蠢的黑客,我认为你可能不得不使用for循环,它可能是一个10行代码,没什么好担心的。

不,没有现成的解决方案,好吧。除了使用愚蠢的黑客,我认为您可能必须使用for循环,它可能是一个10行代码,无需担心。

您可以将jlabel数组封装在一个类中,并实现自己的Add()方法,在添加它们时注册侦听器


这样,您就不必在以后对它们进行迭代。

您可以将JLabel数组封装在一个类中,并实现自己的Add()方法,该方法在添加它们时注册侦听器


这样,您就不必在之后对它们进行迭代了。

如果是一个jlabel列表,我建议使用-method,它允许您对一组对象应用相同的操作。

如果是一个jlabel列表,我建议使用-method,它允许您对一组对象应用相同的操作。

如果将标签添加到容器(如JPanel),您可以将侦听器添加到此容器,并知道哪个组件位于特定位置

JPanel panel = new JPanel();
panel.addMouseListener( whichOneListener );
f.setContentPane( panel );
在本例中,我使用了鼠标侦听器,因为它提供了用户单击的位置

private static MouseListener whichOneListener = new MouseAdapter() {
    public void mouseClicked( MouseEvent e ) {
        JComponent c = ( JComponent ) e.getSource();
        JLabel l  = ( JLabel ) c.getComponentAt( e.getPoint() );
        System.out.println( l.getText() );
    }

};
并正确打印单击的组件


完整的源代码是

如果将标签添加到容器(如JPanel),则可以将侦听器添加到此容器,并知道哪个组件位于特定位置

JPanel panel = new JPanel();
panel.addMouseListener( whichOneListener );
f.setContentPane( panel );
在本例中,我使用了鼠标侦听器,因为它提供了用户单击的位置

private static MouseListener whichOneListener = new MouseAdapter() {
    public void mouseClicked( MouseEvent e ) {
        JComponent c = ( JComponent ) e.getSource();
        JLabel l  = ( JLabel ) c.getComponentAt( e.getPoint() );
        System.out.println( l.getText() );
    }

};
并正确打印单击的组件


完整的源代码是

为什么要避免使用for循环?顺便说一句,我不认为还有其他方法……不要对for()那么刻薄。它在那里帮助你。用它!嗯,如果有其他方法,它会使我的代码更轻,所以我想知道。更轻?用什么术语?for循环在RTL指令实现中非常简单。只需在
JLabel
创建时添加侦听器!!!为什么要避免使用for循环?顺便说一句,我不认为还有其他方法……不要对for()那么刻薄。它在那里帮助你。用它!嗯,如果有其他方法,它会使我的代码更轻,所以我想知道。更轻?用什么术语?for循环在RTL指令实现中非常简单..只需在
JLabel
创建时添加侦听器!!!。。除了使用愚蠢的黑客。。。。或者您可以了解您正在使用的库及其提供的选项:。。除了使用愚蠢的黑客。。。。或者,您可以了解正在使用的库及其提供的选项: