是否可以将数组存储到对象数组中?

时间:2016-05-20 15:40:10

标签: java arrays object togglebutton

我有30 JToggleButton。如果他们被按下,我想把i和标题传递给另一个班级。

confirm.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        boolean buttonClicked = false;
        for (i = 0; i < 30; i++) {
            if (ButtonList[i].isSelected()) {
                buttonClicked = true;

                System.out.print(i+1);
                System.out.println(title);
                pass(title, ButtonList[i]);
            }
        }
        if (!buttonClicked) {
            JFrame parent= new JFrame();
            JOptionPane.showMessageDialog(parent, "You haven't select a seat");
        }
    }
});

在调用past()函数之前,我在这里做了一个测试。打印的标题数量似乎跟随点击的toggleButton总数。怎么避免这个?

上面的代码给出了这个输出(假设点击了2个切换按钮)

  

1Marvel的美国队长

     

2Marvel的美国队长

3 个答案:

答案 0 :(得分:1)

您是否尝试传递指定影片的所有选定席位?

    Set<Integer> selectedSeats = new LinkedHashSet<>();
    for (int i = 0; i < 30; i++) 
    {
        if (ButtonList[i].isSelected()) 
        {
            selectedSeats.add(i + 1);
        }
    }

    if (selectedSeats.isEmpty()) 
    {
        JFrame parent= new JFrame();
        JOptionPane.showMessageDialog(parent, "You haven't select a seat");
    }
    else
        pass(title, selectedSeats);

答案 1 :(得分:1)

  

我的问题是如何将数组i存储到对象中以便它   可以在名为pass()的新函数中传递标题吗?

所以,我知道您想要通过名为“pass”的方法通知标题及其选中的项目。如果是这种情况,您可以执行以下操作:

pass(list, title);

使用下面的代码(使用ArrayList你不需要使用“buttonClicked”布尔值):

confirm.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ArrayList<int> list = new ArrayList<int>();

        for (i = 0; i < 30; i++) {
            if (ButtonList[i].isSelected()) {
                list.add(i);
            }
        }                       
        if (list.size() == 0) {
            JFrame parent= new JFrame();
            JOptionPane.showMessageDialog(parent, "You haven't select a seat");
        }
    }
});

我希望这会有所帮助。

编辑:Andy Turner你是对的,我只是改变了它

答案 2 :(得分:0)

想要接收数据的类可以实现ActionListener接口。然后你可以使用该类而不是新的ActionListener。

这可能是这样的:

public class ClassThatWantsEvents implements ActionListener{
  @Override
  public void actionPerformed(ActionEvent e) { ...

以及如何在当前班级中使用它:

confirm.addActionListener(ClassThatWantsEvents);