Java 如果我想打印';i';当我点击';比如[i]';按钮就像我点击';按钮2';那么它应该给我价值';2'; 如何在“执行的操作”部分中获取值id“I”。对于我单击的每个按钮,它将“i”的值设为0 如果我想在单击“喜欢[I]”按钮时打印“I”的值,该怎么办。比如当我点击“按钮2”时,它会给我值“2”

Java 如果我想打印';i';当我点击';比如[i]';按钮就像我点击';按钮2';那么它应该给我价值';2'; 如何在“执行的操作”部分中获取值id“I”。对于我单击的每个按钮,它将“i”的值设为0 如果我想在单击“喜欢[I]”按钮时打印“I”的值,该怎么办。比如当我点击“按钮2”时,它会给我值“2”,java,swing,arraylist,jbutton,Java,Swing,Arraylist,Jbutton,此代码: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class button_array extends JFrame{ int i; JLabel[] ulb = new JLabel[4]; JButton[] like = new JButton[4]; JPanel panel = new JP

此代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class button_array extends JFrame{
    int i;
    JLabel[] ulb = new JLabel[4];
    JButton[] like = new JButton[4];
    JPanel panel = new JPanel();
    public button_array() {

        new JFrame();
        i =3;
        while(i>0) {
            ulb[i] = new JLabel("user "+i);
            like[i] = new JButton("Button "+i);
            
            
            panel.add(ulb[i]);
            panel.add(like[i]);
            panel.add(Box.createVerticalStrut(25));
            
            like[i].addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println(i);
                }
            });
            
            i--;
        }
    
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    add(panel);
    setSize(400,400);
    setVisible(true);
    }
    public static void main(String[] args) {
        new button_array();
    }
}
由于循环中的
i--
,因此当您单击时,它将获取此时的
i
值,该值等于0,因此不起作用

因此,如果您想在
like[]
中打印
JButton
索引
,您可以在override
actionPerformed
中这样做:

    System.out.println(i);

请不要链接不相关的截图。这句话没有添加任何无法用几句话解释的内容。
@Override
public void actionPerformed(ActionEvent e) {
    JButton o = (JButton)e.getSource();
                    
    for (int j = 0; j < like.length; j++)
    {                        
        if (like[j]!= null && (JButton)like[j] == o)
        {
            System.out.println(j);
        }
    }
}
@Override
public void actionPerformed(ActionEvent e) {
    JButton o = (JButton)e.getSource();
    String str1 = o.getText();

    String str2 = str1.substring(6, str1.length());
    System.out.println(j);
}